为什么';";(0到9)。反转();用Scala编译?

为什么';";(0到9)。反转();用Scala编译?,scala,Scala,我是Scala的初学者。 据我所知,代码(0到9)。反向的含义与: var range : Range = 0 to 9; range.reverse range.reverse表示调用range对象的reverse方法,不带参数,括号省略 但是当我编写range.reverse()时,出现了一个编译错误: error: not enough arguments for method apply: (idx: Int)Int in class Range. Unspecified value

我是Scala的初学者。 据我所知,代码
(0到9)。反向
的含义与:

var range : Range = 0 to 9;
range.reverse
range.reverse
表示调用
range
对象的reverse方法,不带参数,括号省略

但是当我编写
range.reverse()
时,出现了一个编译错误:

error: not enough arguments for method apply: (idx: Int)Int in class Range.
Unspecified value parameter idx.
              range.reverse()
为什么呢?
range.reverse不是
range.reverse()的缩写吗

编译并执行您期望的操作

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

注: 方法
reverse
在类似属性处定义(不带“()”):


你有没有检查过这是否意味着当我写
(0到9)。reverse()
,编译器认为我在调用
((0到9)。apply()
?@WeiboLi-是的,正如错误消息所示。
(0到9)。reverse
本身是完整的,因为
reverse
方法定义时没有括号,它返回一个
范围
对象。因此,在这之后添加括号将调用
Range.apply(…)
。因此出现了编译错误。
val r = (0 to 9).reverse
final override def reverse: Range = ...