【学習13日目】3.3.2 関数本体は、文と式を含む

3.3.2 関数本体は、文と式を含む
関数本体は、文が並び、最後に式を置くか文を置くという形で形成されます。

文とは値を返さない命令
文=statement
parentheses = 括弧
unstable = 不安定

let x = 1; ←これはOK
let x = (let y = 1); ←これは括弧内のletが値を返さず、xに何も入らないのでダメ。

※C やRuby では、代入は代入値を返します。これらの言語では、x = y = 6 と書いて、x もy も値6 になるようにできるのですが、Rust においては、そうは問屋が卸さないわけです。


fn statement_test(){
let q = {
let p = 2;
};
println!("q = {}", q);
}
↑これも文のみ(値を返す構造になっていない)


fn statement_test(){
let q = {
let p = 2;
P + 1 //←行末にセミコロンなし
};
println!("q = {}", q);
}
↑これは p+1という式が中にあり、値を返すので動作する。

式は文の一部になりえます: 関数呼び出しも式です。マクロ呼び出しも式です。新しいスコープを作る際に使用するブロック( {} ) も式です:

式は終端にセミコロンを含みません。式の終端にセミコロンを付けたら、文に変えてしまいます。そして、文は値を返しません。

わかったようなわからないような。