<commit_before>## 制御構造-条件分岐

file: [pattern_matching.rs](.src/pattern_matching.rs)

```rust
fn main( )
{
  let a = 123u;

  match a
  {   0       => println!( "ししとうがらし" )
  , 123 | 456 => println!( "ぴーまん" )
  , 500..2500 => println!( "ぱぷりか" )
  , _         => println!( "はらぺーにょ" )
  }

  println!
    ( "{}"
    , match ( 123u, 456u )
      { ( 123,   t ) if t < 123 => "三鷹"
      , ( 456,   _ )            => "能鷹"
      , (   s, 123 ) if s > 456 => "黄辛"
      , (   _,   _ )            => "万願寺"
      }
    );
}
```

result:

> ```zsh
ぴーまん
万願寺
```

### 得られること

1. `match`でパターンマッチングを使えるようだ。
1. パターンには `0` のように単一の値を書けるようだ。
1. パターンには `123 | 456` のように複数の特定の値を書けるようだ。
1. パターンには `500..2500` のように値の範囲を書けるようだ。
1. パターンには `_` で任意にヒットするパターンを書けるようだ。
1. パターンには変数名を与えて `if t < 123` 任意の条件を判定した結果を使えるようだ。

### おまけ

1. `(123u, 456u)`のようにしてタプルを使えるようだ。しかしこのチュートリアルの段階ではまだタプルについて詳しくは触れられて居ないようだ。<commit_msg>追記した: マッチ部分の変数への取得  とタプルの要素の得方について<commit_after>## 制御構造-条件分岐

file: [pattern_matching.rs](.src/pattern_matching.rs)

```rust
fn main( )
{
  let a = 123u;

  match a
  {   0       => println!( "ししとうがらし" )
  , 123 | 456 => println!( "ぴーまん" )
  , 500..2500 => println!( "ぱぷりか" )
  , _         => println!( "はらぺーにょ" )
  }

  println!
    ( "{}"
    , match ( 123u, 456u )
      { ( 123,   t ) if t < 123 => "三鷹"
      , ( 456,   _ )            => "能鷹"
      , (   s, 123 ) if s > 456 => "黄辛"
      , (   _,   _ )            => "万願寺"
      }
    );
  
  let ( x, _, z ) =
    match a
    { s @ 0..100 => ( s + 1,  1, ( s + 1 ) * ( s + 1 ) )
    , s @ _      => ( s - 1, -1, ( s - 1 ) * ( s - 1 ) )
    };

  println!( "x: {} y: {}", x, y );
}
```

result:

> ```zsh
ぴーまん
万願寺
x: 122 y: 14884
```

### 得られること

1. `match`でパターンマッチングを使えるようだ。
1. パターンには `0` のように単一の値を書けるようだ。
1. パターンには `123 | 456` のように複数の特定の値を書けるようだ。
1. パターンには `500..2500` のように値の範囲を書けるようだ。
1. パターンには `_` で任意にヒットするパターンを書けるようだ。
1. パターンには変数名を与えて `if t < 123` 任意の条件を判定した結果を使えるようだ。
1. パターンに対応する値を変数で取得して使いたければ `s @ 0..100` のように`@`を付けて前に変数名を与えれば良いようだ。

### おまけ

1. `(123u, 456u)`のようにしてタプルを使えるようだ。しかしこのチュートリアルの段階ではまだタプルについて詳しくは触れられて居ないようだ。
1. タプルの中身を取得したい場合には `let (x, _, z) = ` のように欲しいタプルに対応する部分に変数名を入れ、不要な部分には`_`を入れて`let`すれば良いようだ。
{'fraction_non_alphanumeric': 0.1859713890170743, 'fraction_numerical': 0.0747577295800646, 'mean_word_length': 2.3405238828967643, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4643897', 'n_tokens_mistral': 1576, 'n_tokens_neox': 1370, 'n_words': 195}