する機能を定義します。コードはIntsの対のベクトルを生成し、それをフィルタリングしようとします。スカラ:私はScalaのコードで遊んでてきたと私は理解していないコンパイラエラーに対して出ている正しいタイプ
val L = for (x <- (1 to 5)) yield (x, x * x)
val f = (x: Int, y: Int) => x > 3
println(L.filter(f))
コンパイラは、コンパイルエラーメッセージビーイングとfilter
メソッドの引数としてf
を使用しようと文句を言う:
f
を定義するにはどうすればよい
error: type mismatch;
found : (Int, Int) => Boolean
required: ((Int, Int)) => Boolean
?私は(x: Int, y: Int)
の周りに余分な括弧を追加しようとしましたが、これは与えた:
error: not a legal formal parameter
val f = ((x: Int, y: Int)) => x > 3
^
この問題は、引数リストとタプルの区別を除去するための引数です。つまり、今のところ、 'f(x、y)'の '(x、y)'は裸の '(x、y)'とは異なる種類のものです。残念ながら、この区別を取り除くことは技術的に重要ではありません。 –