目次

Rustの勉強[パターンとマッチング その4]

(更新: )ぎじゅつ

はじめに

#

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 日本語版

もっとざっくり読めそうな予感