【学習7日目】変数と可変性
まずは、ずっと「あれ~どうやるんだろう」と思っていたが調べなかったことあれこれ
teraterm+tmuxでペインサイズ変更とコピー | tm23forest.com
tmuxのペインの大きさ調整(起動後) Ctrl+B → Alt+(方向キー) 5行、5文字単位
ペインのリサイズ - tmux | nju33
こちらはprefix (Ctrl+B→ :) その後 tmuxのステータスバーにカーソルが移るので、そこで「resize-pane -UDLR (方向) 数値」で1行、1文字単位で微調整可能。
さて数当てゲームについての説明をもう一度読み直した。たったあれだけのコードだが、説明を読むと中身が詰まりまくっている。これから次に進むのが不安だが、ともかく前に進もう。
今日はつづき「3. 一般的なプログラミングの概念」に入る。
この章では、ほとんど全てのプログラミング言語で見られる概念を講義し、それらがRustにおいて、 どう動作するかを見ていきます。多くのプログラミング言語は、その核心において、いろいろなものを共有しています。 この章で提示する概念は、全てRustに固有のものではありませんが、Rustの文脈で議論し、 これらの概念を使用することにまつわる仕様を説明します。
具体的には、変数、基本的な型、関数、コメント、そして制御フローについて学びます。 これらの基礎は全てのRustプログラムに存在するものであり、それらを早期に学ぶことにより、強力な基礎を築くことになるでしょう。
変数と可変性
以下がある。
- let x = 5; (不変変数、不変な変数というのも妙だが)
- let mut x = 5; (可変変数 mutable)
- const MAX_POINTS: u32 = 100_000; (定数、要注釈、定数名は大文字_大文字がルール)
シャドーイング
これは初っ端から難しい。シャドーイングで同じ変数名の値を上書きできるなら不変じゃねーだろと思うが、読み進めよう。
シャドーイングは、変数をmutにするのとは違います。なぜなら、letキーワードを使わずに、 誤ってこの変数に再代入を試みようものなら、コンパイルエラーが出るからです。letを使うことで、 値にちょっとした加工は行えますが、その加工が終わったら、変数は不変になるわけです。mutと上書きのもう一つの違いは、再度letキーワードを使用したら、実効的には新しい変数を生成していることになるので、 値の型を変えつつ、同じ変数名を使いまわせることです。
ここはしっかり理解しないとあとで面倒になりそう。ここだけじゃなく、全部のステップがそうでしょうけど。
あとここの↓
途中ににいきなり{ }でかこまれたのが入る、その入り方が分からない。
fn main() {
let x = 5;let x = x + 1;
{
let x = x * 2;
println!("The value of x in the inner scope is: {}", x);
}
println!("The value of x is: {}", x);
}
なぜ{ } で囲まなくてはいけないか。(最後のprintlnで入っている値を2番めのletに戻すためか? あとで実験)
あと、今回のサンプルコードを Cargo new --bin でつくったの、この --bin は何か、はおいおい。か。
今日のまとめ
let を使う変数の上書き。letで定義し直す。←これがシャドーイング(??)
let x = 1;
let x = 2;
let mutで可変にしておく場合。直で書き替え可
let mut x = 1;
x = 2;
※ただし変数の型を変更することは出来ない。
変数宣言(let)、そのあとにそこに入れるものを書くなりなんなり。順番がある。
例)
let mut guess = String::new(); ←まず宣言
io::stdin()
.read_line(&mut guess) ←そして入れる
.expect("Failed to read line");
今日はここまで。明日は3.2. データ型。
おまけ
viのモード切替面倒くさい。。。。