変数バインド

1173 ワード

1.変数バインディングにおけるパターンマッチングは、例えば以下のようにパターンマッチングと呼ぶが、以下に挙げるように注意すべき点もある.
let (a, b) = (1, 2);
let c :i32= 9;
let (a1, b1) = (1, a1+2);//error:can not find a1 in this scope
let (a2, b2) = (c, c+9);//it's okay

2.可変rustのバインドのデフォルトは可変ではありません.可変のバインドバインドは、バインド関係を解除することはできません.
let a:i32 = 5;
a = 10;//error:re-assignment of immutable variable 'a'

3.rustでは初期化されていない変数は使用できません
let a:i32;
println!("{}", a);//use of possibly uninitialized variable: `a`

上のコードが実行された後に出力されたエラーの結果から、rustでは変数のデフォルト初期化作業を行わないことがわかりますか?次のコードが間違っているはずですよね.
let a:i32 ;
a = 9;
println!("{}", a);

4.役割ドメインと非表示は、同じ{}内の変数が同じ役割ドメインにあるコードブロックを表すために{}を使用します.しかし、問題は、変数バインドにおけるモードマッチングが同じ役割ドメインでないエラーが発生する理由です.変数非表示の問題では、サブ役割ドメインで定義された変数は、外側の役割ドメインにある同じ名前の変数を非表示にすることができ、同じ役割ドメインにある後に定義された同じ名前の変数は、その役割ドメインにある前に定義された変数を非表示にすることができます.ただし,ここでは変数隠蔽と変数可変性との間の障壁法について注意する.彼らは2つの異なる概念であり、変数の可変性は新しい変数に関与しないが、変数の非表示は必ず新しい変数を定義し、同名の変数にすぎない.
let a:i32 = 9;
{
  let a:i32 = 8;
  println!("{}",a);//8
}
let a:i32 = 0;
println!("{}", a);//0