kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

Re:_ の使い方

で,以下のようにして,動かしていた.

set.filter(_ match{case(i, str) => i == 1 && str == "a"})

俺も時々間違うんだけど,最初の_と次の_は違う引数を表してるってのに気づけば問題ないと思う.
エラー(error: wrong number of parameters; expected = 1)を見ても気づくはず.


まあ,match使うぐらいなら,俺なら素直に

set.filter(a => a._1 == 1 && a._2 == "a")

ってするけどね.

http://d.hatena.ne.jp/matt-k/20080930#p1

それでも良いですが、どうせなら

set.filter{ case (i, str) => i == 1 && str == "a" }

とするのはいかがでしょう。

{ case ... }

というのは、無名関数の生成と引数に対するパターンマッチを同時に記述したいときに使える簡略記法です(それ以外の使い道もありますが)。