【学習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のモード切替面倒くさい。。。。