【发布时间】:2012-01-04 05:55:49
【问题描述】:
我经常遇到 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 中得到一个很好的答案:) -
(实际上,我想知道是否存在 any 上下文,其中
_以不同的方式 不具有魔力...) -
另外,可能很有趣,eta 扩展:
Some(4).map(1 +)。而且“并不比 Java 复杂多少”....是的,对 :-)
标签: function scala syntax compiler-errors