scala中内部函数的占位符

时间:2015-12-11 12:40:38

标签: scala

以下是简单的代码:

(0 to 20).foreach(print(math.pow(2, _)))

我在想,为什么它不起作用,但是这个类似的代码

(0 to 20).foreach(x => print(math.pow(2, x)))

做好工作。在内部函数中使用占位符有什么问题?

1 个答案:

答案 0 :(得分:9)

Scala使用下划线创建一个匿名函数,其中最小的表达式不是身份函数。

所以编译器首先尝试:

(0 to 20).foreach(print(x => math.pow(2, x => x)))

不,这是身份功能,所以它会出现一组括号并尝试:

(0 to 20).foreach(print(x => math.pow(2, x)))

这是一个非常重要的匿名函数,因此它会停在那里。