プログラミング言語Rust 「4.1. 変数束縛」写経時のつぶやき
2018/12/10
■ 変数束縛
— ちゃまぐ (@tyamaguc07) 2018年12月10日
変数束縛は何らかの値を名前へと束縛するため、後でその値を使える
Rustでは他の言語と違って1つの値に対して1つの名前が対応する
多くの言語では変数束縛は変数と呼ばれる
■ パターン
Rustの変数束縛は多少皮を被せてある
let の左側の式は「パターン」であって、ただの変数名ではない
■ 型アノテーション
— ちゃまぐ (@tyamaguc07) 2018年12月10日
Rustは静的な型付言語であり、前もって型を与えておき、コンパイル時に検査される
Rustには「型推論」と呼ばれるものがある
型推論が型が何であるか判断出来るなら、型を書く必要はない
書きたいなら型を書くことも出来る
型はコロン(:)のあとに書く
let x: i32 = 5;
Rustには多くのプリミティブな整数型がある
— ちゃまぐ (@tyamaguc07) 2018年12月10日
プリミティブな整数型は符号付き型は i 、符号無し型は u から始まる
整数型として可能なサイズは8、16、32、64ビット
■ 可変性
— ちゃまぐ (@tyamaguc07) 2018年12月10日
デフォルトで、 束縛はイミュータブル
mutを使って束縛をミュータブルに出来る(let mut x = 5;)
■ 束縛を初期化する
束縛(変数)を使う前に初期化されている必要がある
Rustは一度も使われていない変数について警告を出す
未初期化の値を使うことは許されていない(未初期化の値?)
文字列インターポーレーション (String interpolation)はコンピュータサイエンスの用語
— ちゃまぐ (@tyamaguc07) 2018年12月10日
単に波括弧だけを使った時は、Rustはインターポーレートされる値の型を調べて意味のある方法で表示しようとする
フォーマットを更に詳しく指定したいなら数多くのオプションを利用できる
■ スコープとシャドーイング
— ちゃまぐ (@tyamaguc07) 2018年12月10日
変数束縛にはスコープがあり、変数束縛は定義されたブロック内でのみ有効
ブロックとは { と } で囲まれた文の集まり
変数束縛は覆い隠すこともできる(このことをシャドーイングという)
あとに出てくる同じ名前の変数束縛があると、以前の束縛を上書きする
シャドーイングは同じ名前に違う型の値を再束縛することが出来る
— ちゃまぐ (@tyamaguc07) 2018年12月10日