kmizuの日記

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

2008-09-01から1ヶ月間の記事一覧

Re:_ の使い方

で,以下のようにして,動かしていた. set.filter(_ match{case(i, str) => i == 1 && str == "a"})俺も時々間違うんだけど,最初の_と次の_は違う引数を表してるってのに気づけば問題ないと思う. エラー(error: wrong number of parameters; expected = 1…

Partial function

http://d.hatena.ne.jp/kmizushima/20080930/1222759243のコメント欄より それ以外の使い道に興味津々ですw { case p1 ... }という形の式は、関数型(A => B, (A, B) => C など)が要求されている箇所で出現した場合、たとえば、 val succ: Int => Int = { ca…

forでパターンマッチを使う

あまり知られていないが、実はScalaのfor式の val list = List(Some(1), None, Some(3), None, Some(5)) for(Some(v) <- list) println(v)ここで、Noneが来たときの処理が書かれていないことに、アレ?と思われる方が居るかもしれない。この事に対する答えは…

まぎらわしい _ の意味の違い:解答編

まあ、試してみりゃすぐわかる話なんだけど、 val p = println _ p()の方が正解。で、println(_)は(x) => println(x)のシンタックスシュガーなんだけど、xの引数の型が推論できないので、コンパイルエラーになっちゃうのであった。だから、実は val p: Strin…

Scala 2.7.2はJavaの可変長引数に対応している

scala-user MLの最近のポスト見て初めて知ったんだけど、Scala 2.7.2ではJava言語で書かれたメソッドで可変長引数を取るものに対して、ちゃんと可変長引数を取るメソッドとして呼び出せるようになっているみたい。たとえば、 System.out.printf("%s world", …

まぎらわしい _ の意味の違い

次の二つのScalaプログラムの断片のうち、どちらか片方だけが正しい。さて、どちらだろうか? val p = println _ p()val p = println(_) p()