为什么不在Scala中编译“(0到9).reverse()”?

时间:2014-04-02 10:10:24

标签: scala

我是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}}的缩写吗?

1 个答案:

答案 0 :(得分:3)

val r = (0 to 9).reverse

编译并完成您的期望。

当您添加paranethsis时,编译器会认为您正在尝试调用Rangeapply方法,该方法采用单个索引参数。您没有提供任何参数,因此编译失败。

注意: 方法reverseRange.scala类似属性中定义(没有'()'):

final override def reverse: Range = ...