見出し画像

Rustで100本ノック: match式悩み中

継続中のRustで100本ノック、No.34まで完了しています。この辺りはループに関する問題ですが、インデックス付きループにおいて特定要素を出力しないという形で配列の中を走査して処理する案件が多いです。今時のものならfilter的なモノを用いて除外してから出力というのがトレンドなのでしょうか

# Javaっぽい疑似表現です
array.filter( x -> x != number ).foreach(x -> println(x))

でもぱっと見た限りではそういう表現がないように見えるので、match式を試してみてます。Rustの中では「使わない値は "_"を付けて表現する」箇所があって、

for _ in 0..20 {
    // 何かの処理
}

といった感じで使いますね。中では0〜19の値は使われません。下手に変数名を書いてしまうと警告が出てしまいます。

で、matchによる条件分岐をしようとすると、このときも「マッチしたもの以外」に関しては "_"でキャッチするという構文になってますね。

match count % 5 {
    0 => println!("bar"),
    _ => println!("{}",count),
}

また、同じ型の変数を対象として書くのは良いけど、実行時に計算させるようなものはアウトに見えます。事前にnunberに数値を入れておくとして…

画像1

とするとアウトです。というか、変数を渡すと機能しないですね。即値やシンボルでないといけないの?ただサンプルなどを見てるとSome(x)のようなOption系が使われているのはありますね。書き方の問題?

この辺りはまだよくわかっていません…

この記事が気に入ったらサポートをしてみませんか?