List [_]中扩展函数缺少参数类型

时间:2013-01-13 03:19:17

标签: scala

Scala版本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))
                                                 ^

有人可以解释这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

有时候编译器无法推断出类型,你必须帮助它。尝试“list.filter(_!= item)” - 使用“。”符号通常可以解决问题。如果不这样做,您可以随时执行“list filter {li:Int =&gt; li!= item}”。 FWIW,scala 2.10 REPL似乎没有问题为我推断参数类型。

答案 1 :(得分:0)

我能让你的例子编译的唯一方法是引入一个类型参数:

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

您使用存在感和Any的任何特定原因?