3

スカラ バージョン 2.10.0

このような関数を作成します。

def rm(workingSet: List[_])(item: Any)(f:(List[_], Any) => List[_]) = f(workingSet, item)

次のエラーが表示されます。

scala> val data = List(1,2,3)
scala> rm(data)(1)((list, item)=>list filter (_ != item))
<console>:10: error: missing parameter type for expanded function ((x$1) => x$1.$bang$eq(item))
          rm(data)(1)((list, item)=>list filter (_ != item))
                                                 ^

誰かがこの問題を説明できますか?

ありがとう!

4

2 に答える 2

0

例をコンパイルする唯一の方法は、型パラメーターを導入することでした。

def rm[A](workingSet: List[A])(item: A)(f:(List[A], A) => List[A]) = f(workingSet, item)

実存主義を使用している特定の理由とAny

于 2013-01-13T04:20:20.030 に答える
0

コンパイラが型を推測できず、それを助けなければならない場合があります。「list.filter(_ != item)」を試してください - 「。」を使用して 多くの場合、記法でうまくいきます。それでもうまくいかない場合は、いつでも "list filter { li: Int => li != item }" を実行できます。FWIW、scala 2.10 REPL では、パラメーターの型を推測するのに問題はないようです。

于 2013-01-13T03:40:01.997 に答える