以下是简单的代码:
(0 to 20).foreach(print(math.pow(2, _)))
我在想,为什么它不起作用,但是这个类似的代码
(0 to 20).foreach(x => print(math.pow(2, x)))
做好工作。在内部函数中使用占位符有什么问题?
答案 0 :(得分:9)
Scala使用下划线创建一个匿名函数,其中最小的表达式不是身份函数。
所以编译器首先尝试:
(0 to 20).foreach(print(x => math.pow(2, x => x)))
不,这是身份功能,所以它会出现一组括号并尝试:
(0 to 20).foreach(print(x => math.pow(2, x)))
这是一个非常重要的匿名函数,因此它会停在那里。