Rust学習 #5 関数

fuuuu
·

Rustの関数と変数の命名規則は、スネークケース(訳注: some_variableのような命名規則)を使うのが慣例です。 スネークケースとは、全文字を小文字にし、単語区切りにアンダースコアを使うことです。

ありがたい!!! PHPで、変数名はスネークケースを利用していたので、すっと馴染めそう。関数名はキャメルケースを利用していたので、そこだけ気を付けておく

文とは、なんらかの動作をして値を返さない命令です。 式は結果値に評価されます。

関数定義も文になります。

文は値を返しません。故に、let文を他の変数に代入することはできません。

文とは。式とは。

let y = 6という文の6は値6に評価される式です。関数呼び出しも式です。マクロ呼び出しも式です。 新しいスコープを作る際に使用するブロック({})も式です

注意点

{

let x = 3;

x + 1

}

は今回の場合、4に評価されるブロックです。その値が、let文の一部としてyに束縛されます。 今まで見かけてきた行と異なり、文末にセミコロンがついていないx + 1の行に気をつけてください。 式は終端にセミコロンを含みません。式の終端にセミコロンを付けたら、文に変えてしまいます。そして、文は値を返しません。 次に関数の戻り値や式を見ていく際にこのことを肝に銘じておいてください。

文は値を返さない。関数に直接 let x = 1 + 7, ... のような形で引数を渡せないことは注意。上の引用にも書いてあるが、自分に言い聞かせるため。とはいえそのような引数の渡し方はやったことないけど

重要だと思う一文

Rustでは、関数の戻り値は、関数本体ブロックの最後の式の値と同義です。 returnキーワードで関数から早期リターンし、値を指定することもできますが、多くの関数は最後の式を暗黙的に返します。

ゆえに、下記のようなスペシャルシンプルな戻り値のある関数が定義できる

fn five() -> i32 {

5

}

セミコロンを付けると文になる

Rustでは関数での最後の式の値が戻り値となる!もちろん、明示的にreturnで戻り値を宣言することも可能だし、早期returnもok

関数での最後の式の値が戻り値 となる概念が個人的にはかなり新鮮