Rsut 初学 履歴
Rust の初学者なので、言語仕様を プログラミング言語Rust で学習しているのですが、留意すべきと判断した点を備忘録代わりに、このエントリーへ暫時加筆して参ります。
変数束縛
この章の雑感は「シャドーイングに注意」かな。
変数に対して型を宣言しているにもかかわらず、同じ変数名に全く異なる型の値を束縛できる、というのは驚いた。
let mut x: i32 = 1; x = 5; let x = x; // x はイミュータブルになって 7 に束縛されました let x = "Hello World!"; // x は違う型になりました
コンパイラが色々と指摘してくるようなので、事前にバグを察知できるとは思うけど、「型違い」というだけで潜在バグの発生を勘ぐってしまうのは心配性杉るかw
あと「変数名の枯渇」は相当な確率で顕現する (苦笑) ので、スコープは中々に有り難い機能。
関数
関数の引数には型宣言が必須。
確かに重要なコトだけど、変数束縛では宣言不要、といった感じで緩い所も有ったりして「一貫性に欠く」という印象を与えてしまうのだろうな、と。
あと「戻り値」後のセミコロンの扱いがややこしや。
fn add_one(x: i32) -> i32 { x + 1 // OK! } fn add_one(x: i32) -> i32 { x + 1; // BAD! } fn add_one(x: i32) -> i32 { return x + 1; // OK! }
Rust の文法は文の後には他の文が続くことが期待されています。
(中略)
return を関数の最後の行で使っても動きますが、それはよろしくないスタイルだと考えられています。
なので、原則としては「関数は式で終わり文では終わらない」という理解で正解... なのかなぁ。何故か変な所で原理主義だよねw
プリミティブ型
プリミティブ型ばかりは、練習用ではなく実用的なコードを書いてみないとコツは掴めないなぁ、と。
コメント
複数行の表現方法が無いのが (;´∀`)…痛いなぁ…
if
パターンマッチングが有るから、if の使い所は少ないかも。
ループ
概念的には Ruby に近い感じがする。continue 文とループラベルが新しいな。