Rust学習 #6 制御フロー

fuuuu
·

if文

コード内の条件式は、bool型でなければならないことにも触れる価値があります。 条件式が、bool型でない時は、エラーになります。

Rustのif文は bool型のみ許可される。PHPのように安易にオブジェクトをif文に渡してはいけない!!!ここはちょこちょこ引っかかりきそうなので注意!

また、ifとelseとで、返す値の型が異なるのもNG if ではintを返して、elseではcharを返すといった処理をするとコンパイルエラーとなる!この辺りは大分とかっちりしてるんだなーという印象

if elseif ... で複数の条件を実行したいときは、最初に真と判定されたタイミングでif 文での制御は終了するので、複雑な条件判定をする場合は matchを利用するといいらしい matchに関してはまた後ほど学習する

phpでの foreach が Rustでは for 文らしい

php の for 文運用も Rust の for文で補填できそう Range 型を利用することで、指定の値の範囲でループ処理ができる

fn main() {

 for number in (1..4).rev() {

  println!("{}!", number);

 }

println!("LIFTOFF!!!");

}

loop文の使いどころがいまいち掴めていない。labelを指定して、どのループまでぬけるとかを細かく指定できるそうな。うまい利用方法がぱっと思いつかない。利用しすぎると、著しく可読性を損なう予感。。。

fn main() {

 let mut count = 0;

 'counting_up: loop {

  println!("count = {}", count);

  let mut remaining = 10;

  loop {

   println!("remaining = {}", remaining);

   if remaining == 9 {

    break;

   }

   if count == 2 {

    break 'counting_up;

   } remaining -= 1;

  }

  count += 1;

 }

 println!("End count = {}", count);

}