为什么';";(0到9)。反转();用Scala编译?
我是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
(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
classapply
方法,该方法采用单个索引参数。您没有提供任何参数,因此编译失败
注:
方法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 = ...