def list = List(1,2,3,4).map(1+_).reverse.foreach((i:Int)=> println(i))
正确编译但不会在屏幕上打印任何内容。这是我的一个错字,但我很惊讶它编译完毕。
def list = List(1,2,3,4).map(1+_).reverse.foreach((i:Int)=> println(i))
println("--")
list
将输出显示为
--
5
4
3
2
所以列表在这种情况下已成为一种功能?这就是我通过输出推断它不是我预期的
答案 0 :(得分:3)
是的,list
实际上是一种不带参数的方法。这个定义之间需要注意的关键区别是简单地使它成为val
,每次使用它时都会对它进行评估,因此每次引用list
时,都会打印输出。
正如下面的评论所指出的,将其命名为list
可能会产生误导,因为foreach
的返回类型为Unit
。无论你如何声明list
,情况都是如此。
答案 1 :(得分:1)
在这种情况下,您始终可以显式为值写入类型,并看到编译器抱怨类型不匹配。
答案 2 :(得分:0)
方法定义不执行该方法。你也必须调用这个方法。