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))
^
有人可以解释这个问题吗?
谢谢!
答案 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
的任何特定原因?