我不断遇到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?还是我在做一些可怕的错误?
'_'并不意味着你认为它意味着你试图但是完成的任务。在这种情况下,它是一个*特殊的*符号:*任何其他简单的标识符都应该正常工作*。由于这个魔法,“Some(4).foreach(_ +:List())'”正常工作“。比较'Some(4).map(_ + 1)'和'Some(4).map(x => x + 1)'。希望这是一个重复的(并关闭这样)或将有一个很好的答案,从SLS拉动:) – 2012-01-04 05:58:22
http://stackoverflow.com/questions/7695270/underscore-in-list-filter(好),http ://stackoverflow.com/questions/4422016/scala-underscore-minimal-function,http://stackoverflow.com/questions/6593277/concise-notation-for-single-arg-anonymous-function-avoiding-underscore-not -wor – 2012-01-04 06:05:22
(其实,我不知道是否有任何* *上下文,其中'_'是*不*神奇的*不同的方式* ...) – 2012-01-04 06:05:53