はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
- 町田.pmにきた
- 勉強するつもりがblogを改修してしまった
お勉強
#メモ
#NO IMAGEパターン記法 - The Rust Programming Language 日本語版
- パターンから
matchの詳細な使いかたっぽい
fn main() {
let x = Some(5);
let y = 10;
match x {
// 50だったよ
Some(50) => println!("Got 50"),
// マッチしたよ
Some(y) => println!("Matched, y = {:?}", y),
// 既定のケース
_ => println!("Default case, x = {:?}", x),
}
// 最後にはx = {}, y = {}
println!("at the end: x = {:?}, y = {:?}", x, y);
}
match式内の新しいスコープ内にいるので、これは新しいy変数であり、最初に値10で宣言したyではありません。
- まあそうか
- ライフタイム的にそうだよな
- マッチガードで防げるらしい
fn main() {
let x = Some(5);
let y = 10;
match x {
Some(50) => println!("Got 50"),
Some(n) if n == y => println!("Matched, n = {:?}", n),
_ => println!("Default case, x = {:?}", x),
}
println!("at the end: x = {:?}, y = {:?}", x, y);
}
- 先取りして見た
- なるほど
- matchの中にさらに条件式を書く記法があって、そこでyを評価すればいい
nは新しくSome(n)で定義された変数で、someの中の値が入っている- でsomeの値
nと外部のyを比較できる
まとめ
#- match式に入った
- ライフタイムの考えがなかったのでmatch内も同じ変数が使えると思っていたが違った
- blogの改修をやりすぎた
- けっこう良くなったので良しとする
明日はこれ
NO IMAGEパターン記法 - The Rust Programming Language 日本語版
もっとざっくり読めそうな予感