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

Hep*_*tic 6 syntax scala compiler-errors function

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

JarBuilder.findContainingJar(clazz).foreach {userJars = userJars + _ }
Run Code Online (Sandbox Code Playgroud)

给我一个错误,如:

missing parameter type for expanded function ((x$1) => userJars.$plus(x$1))
Run Code Online (Sandbox Code Playgroud)

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

JarBuilder.findContainingJar(clazz).foreach {x => userJars = userJars + x }
Run Code Online (Sandbox Code Playgroud)

它工作正常.

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

Nei*_*ssy 6

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

如果仔细查看错误,可以看到赋值右侧的表达式是扩展为匿名函数的表达式.

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

userJars = userJars ++ JarBuilder.findContainingJar(clazz)
Run Code Online (Sandbox Code Playgroud)