我是Scala的初学者。
据我所知,代码(0 to 9).reverse
具有相同的含义:
var range : Range = 0 to 9;
range.reverse
range.reverse
表示不带参数调用Range
对象的反向方法,简称省略括号。
但是当我写range.reverse()
时,出现了编译错误:
error: not enough arguments for method apply: (idx: Int)Int in class Range.
Unspecified value parameter idx.
range.reverse()
为什么?不是range.reverse
的{{1}}的缩写吗?
答案 0 :(得分:3)
val r = (0 to 9).reverse
编译并完成您的期望。
当您添加paranethsis时,编译器会认为您正在尝试调用Range
类apply
方法,该方法采用单个索引参数。您没有提供任何参数,因此编译失败。
注意:
方法reverse
在Range.scala类似属性中定义(没有'()'):
final override def reverse: Range = ...