使用_(下划线)时“扩展函数缺少参数类型”?

时间:2012-01-04 05:55:49

标签: function scala syntax compiler-errors

我不断遇到scala的一个问题是lambda'表达式。例如

JarBuilder.findContainingJar(clazz).foreach {userJars = userJars + _ }

给我一​​个错误:

missing parameter type for expanded function ((x$1) => userJars.$plus(x$1))

然而,如果我自己做扩展:

JarBuilder.findContainingJar(clazz).foreach {x => userJars = userJars + x }

工作正常。

这是Scala错误吗?或者我在做一些可怕的错误?

1 个答案:

答案 0 :(得分:6)

匿名函数的占位符语法仅限于表达式。在您的代码中,您尝试在赋值语句中使用通配符,该语句与表达式不同。

如果仔细查看错误,可以看到作业右侧的表达式正在扩展为匿名函数。

考虑到您要完成的任务,您可能需要考虑以下内容

userJars = userJars ++ JarBuilder.findContainingJar(clazz)