4

このコードでエラーが発生するのはなぜですか

def test[A](a: List[A], f: A => A) = a.map(f)

println(test(List(1,2,3), _*2))

error: missing parameter type for expanded function ((x$2) => x$2.$times(2))

ScalaはAがIntであることを認識できないのでしょうか?

4

2 に答える 2

7

これを機能させるには、2番目のパラメータリストが必要です。これが仕様でどのように定義されているかはわかりませんが、以前に見たことがあります。

scala> def test[A](a: List[A])(f: A => A) = a.map(f)
test: [A](a: List[A])(f: (A) => A)List[A]

scala> test(List(1))(_+1)
res1: List[Int] = List(2)
于 2012-12-13T20:42:49.740 に答える
1

これは例であり、何も変更せずにケースで機能させる方法です。

scala> println(test(List(1,2,3), (i: Int) => i * 2 ))

Scalaの型推論は限られているので、助けてください!

これがScalaの(非常に限定された)型推論を最大限に活用する記事です

于 2014-06-19T20:09:39.030 に答える