削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
more detail
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
243 行
== 制御構造 ==
Rust では、{{code|if}}や{{code|for}}などの制御構造も式です。
 
=== 分岐 ===
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a20747fbf03fa8568255ca1225c1ec19 if.rs]:<syntaxhighlight lang=rust>
fn main() {
let number = 3;
 
if number < 5 {
println!("条件は真でした");
} else {
println!("条件は偽でした");
}
println!(
"条件は{}でした",
"偽真".chars().nth((number < 5) as usize).unwrap()
);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
条件は真でした
条件は真でした
</syntaxhighlight>
: C言語なら<syntaxhighlight lang=c inline>"偽真"[number < 5]</syntaxhighlight>で済むところですが、str はインデックスによるアクセスができず、boolは暗黙にはusizeに変換されないので、こうなりました。
: それはともかく、Rust の '''if''' は条件式がカッコ ( ) で括らなくてもいい以外は、C言語系と同じですが、、、
 
==== if は式 ====
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=daccd9877dcbe53c9e4d1dbe7eeea347 if-as-expr.rs]:<syntaxhighlight lang=rust line>
fn main() {
let number = 3;
 
let msg = if number < 5 {
"真"
} else {
"偽"
};
println!("条件は{}でした", msg);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
条件は真でした
</syntaxhighlight>
:変数宣言の初期化項にif式を使っています。
::Rustの '''if''' は、C言語の三項演算子のように値を持ちます。
:気をつけたいのは、<code>"真"</code> と <code>"偽"</code> は、<code>"真";</code> と <code>"偽";</code> ではない点です。
:また、<syntaxhighlight lang=rust inline>let msg = </syntaxhighlight>の文末の<code>};</code> のセミコロンも忘れがちです。
 
== 脚註 ==