Scala范围构造函数API

Scala范围构造函数API,scala,Scala,在Scala中,我们可以通过以下操作之一创建范围对象: var range = 1 to 10 或者使用构造函数 var range = new Range(1,10,1) 然而,如果我们深入研究,我们只能看到一个定义了3个参数的构造函数。所以我的问题是:我们在哪里可以找到第一个构造函数的API?我希望在API页面上找到这些信息。第一个语法糖实际上是通过以下步骤实现的 步骤1:使用scala.Predef中定义的内置隐式转换,将Int隐式转换为RichInt @inline implicit

在Scala中,我们可以通过以下操作之一创建范围对象:

var range = 1 to 10
或者使用构造函数

var range = new Range(1,10,1)

然而,如果我们深入研究,我们只能看到一个定义了3个参数的构造函数。所以我的问题是:我们在哪里可以找到第一个构造函数的API?我希望在API页面上找到这些信息。

第一个语法糖实际上是通过以下步骤实现的

步骤1:使用scala.Predef中定义的内置隐式转换,将
Int
隐式转换为
RichInt

@inline implicit def intWrapper(x: Int)         = new runtime.RichInt(x)
第2步:委托
RichInt.to
Range.inclusive

def to(end: Int): Range.Inclusive = Range.inclusive(self, end)
步骤3:使用
Range.inclusive
函数构造
Range
对象

def inclusive(start: Int, end: Int): Range.Inclusive = new Inclusive(start, end, 1)

// note Range.Inclusive is a subclass of Range
class Inclusive(start: Int, end: Int, step: Int) extends Range(start, end, step)

第一个语法糖实际上是通过以下步骤实现的

步骤1:使用scala.Predef中定义的内置隐式转换,将
Int
隐式转换为
RichInt

@inline implicit def intWrapper(x: Int)         = new runtime.RichInt(x)
第2步:委托
RichInt.to
Range.inclusive

def to(end: Int): Range.Inclusive = Range.inclusive(self, end)
步骤3:使用
Range.inclusive
函数构造
Range
对象

def inclusive(start: Int, end: Int): Range.Inclusive = new Inclusive(start, end, 1)

// note Range.Inclusive is a subclass of Range
class Inclusive(start: Int, end: Int, step: Int) extends Range(start, end, step)

Max的回答解释了
直到
为止是如何工作的,但最后,你的问题没有真正的答案。关于
Range
的介绍性材料提到了
直到
,但是
直到
没有记录在那里,因为它们不是
Range
的构造函数或伴生对象方法。Scaladoc无法通过
RichInt
将间接路径连接到
Range
页面。也许应该这样。

Max的回答解释了
直到
的工作原理,但最后,你的问题并没有真正的答案。关于
Range
的介绍性材料提到了
直到
,但是
直到
没有记录在那里,因为它们不是
Range
的构造函数或伴生对象方法。Scaladoc无法通过
RichInt
将间接路径连接到
Range
页面。也许应该。

你不是说“语法糖”吗?很多东西我都不懂,但我才刚刚开始scala。我假设你的答案是正确的。我会把你的答案标记为正确的,过几个月我就能真正理解你写的东西时再回来。谢谢你不是说“语法糖”吗?很多东西我都不懂,但我只是刚刚开始scala。我假设你的答案是正确的。我会把你的答案标记为正确的,过几个月我就能真正理解你写的东西时再回来。谢谢