削除された内容 追加された内容
→‎if は式: 3項演算子の構文を教える前に、まず普通の初等的な構文を教えろや。
Ef3 (トーク | 投稿記録)
→‎if 文: →‎if 式: Rust では if に限らず、コードブロックは式の一種で値を返します<ref>コードブロックが値を持つプログラミング言語としては、BCPLやRubyがあります。</ref>。その場合、コードブロックの最後の式がコードブロックの値となりセミコロン<code> ; </code>は不要で、もし、<code> ; </code>をつけると<code> ; </code>の次の式(=空文)の値<code> () </code>がコードブロックの値になります。
タグ: 2017年版ソースエディター
405 行
: それはともかく、Rust の '''if''' は条件式がカッコ ( ) で括らなくてもいい以外は、C言語系と同じですが、、、
 
==== if は式 ====
条件分岐は、記法条件式に括弧<code>()</code>が不要<code>-h</code>などややC言語と違うが、基本的な仕組み・概念はC言語などと同じである。
 
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c2f542b8f7ff8437d81c3e653b88cff2 if-as-stmt.rs]:<syntaxhighlight lang="rust" line>
fn main() {
let number = 3;
 
let mut msg = "" ; // 出力文字用の変数.
print!("{}", msg) ; // 未使用変数の警告を消すため
 
if number < 5 {
msg = msg = "真" ;
}
println!("条件は{}でした", msg);
} else {
msg = "偽" ;
println!("条件は{}でした", msg);
}
}
</syntaxhighlight>
429 ⟶ 424行目:
</syntaxhighlight>
 
==== if 式 ====
ifは文のほか、値を返す「式」としての構文も持ちます。
 
;[https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=daccd9877dcbe53c9e4d1dbe7eeea347 if-as-expr.rs]:<syntaxhighlight lang=rust highlight="4,5,7,8" line>
ifは3項演算子を使って下記のようにも書ける。
 
;[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;
448 ⟶ 443行目:
</syntaxhighlight>
:変数宣言の初期化項にif式を使っています。
::Rustの '''if''' は、[[C言語]]の三項演算子<syntaxhighlight lang=c inline>式 ? 値1 : 値2</syntaxhighlight>や、[[Python]]のif式<syntaxhighlight lang=c inline>値1 if 式 else 値2</syntaxhighlight>のように値を持ちます。
:気をつけたいのは、三項演算子を用いる場合if式で <code>"真"</code> と <code>"偽"</code> は、とセミコロン<code>"真" ;</code> と <code>"偽";</code>を付けていけない点です。
:また、<syntaxhighlight lang=rust inline>let msg = </syntaxhighlight>の文末の<code>};</code> のセミコロンも忘れがちです。
Rust では if に限らず、コードブロックは式の一種で値を返します<ref>コードブロックが値を持つプログラミング言語としては、BCPLや[[Ruby]]があります。</ref>。その場合、コードブロックの最後の式がコードブロックの値となりセミコロン<code> ; </code>は不要で、もし、<code> ; </code>をつけると<code> ; </code>の次の式(=空文)の値<code> () </code>がコードブロックの値になります。
 
==== Some() ====