(W&I) you know something?

Use it for myself.

Rsut 初学 履歴

Rust entrance

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 文とループラベルが新しいな。

 

© toomores_such