はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
お勉強
#- やる
- 完全安眠できれば5.5h睡眠でもいいな
NO IMAGEパターンが使用されることのある箇所全部 - The Rust Programming Language 日本語版
letから
メモ
#実は
let文を含む他の箇所でもパターンを使用してきたのです。例として、このletでの率直な変数代入を考えてください:
let x = 5;
この本を通してこのような
letを何百回も使用してきて、お気付きではなかったかもしれませんが、パターンを使用していたのです!より正式には、let文はこんな見た目をしています:
let PATTERN = EXPRESSION;
- はぇー
これは
letでパターンを使用し、タプルを分配します。
let (x, y, z) = (1, 2, 3);
- お、これどっかで出てきたな
- 非同期の
tx?とかでか
- 非同期の
let (x, y) = (1, 2, 3);
タプルの値のうち1つ以上を無視したかったら、「パターンで値を無視する」節で見かけるように、
_か..を使用できるでしょう。
- なーるほど
- これで記述の納得生がでた
関数の引数もパターンにできます。
- nanii
- やりたくはないきがする
fn print_coordinates(&(x, y): &(i32, i32)) {
// 現在の位置: ({}, {})
println!("Current location: ({}, {})", x, y);
}
fn main() {
let point = (3, 5);
print_coordinates(&point);
}
- んーーー?
- これ
pointと型なんだ - 普通に
Tupleか - 久々見たけど気持ち悪いなこれ
structでいい
- これ
クロージャの引数リストでも、関数の引数リストのようにパターンを使用することができます
- これはやむなしかなー
パターンを使用する方法をいくつか見てきましたが、パターンを使用できる箇所全部で同じ動作をするわけではありません。
- はぁー?
- マジかよ
NO IMAGE論駁可能性:パターンが合致しないかどうか - The Rust Programming Language 日本語版
-
なんて読むんだ
-
論駁不可能(ろんばくふかのう)と読むらしい
渡される可能性のあるあらゆる値に合致するパターンは、 論駁不可能なものです。文
let x = 5;のxは一例でしょう。xは何にでも合致し、故に合致に失敗することがあり得ないからです。
- まぁ普通に結果わからん実装はヤバいということか
関数の引数、
let文、forループは、値が合致しなかったら何も意味のあることをプログラムが実行できないので、論駁不可能なパターンしか受け付けられません。if letとwhile let式は、定義により失敗する可能性を処理することを意図したものなので、論駁可能なパターンのみを受け付けます:
- ここが区分けされてるんだな
まとめ
#-
新たなことはなかった
-
letだけ面白かった -
論駁も言葉が難しいだけな気がしている
-
次ここ
NO IMAGE論駁可能性:パターンが合致しないかどうか - The Rust Programming Language 日本語版