Scala范围构造函数API
在Scala中,我们可以通过以下操作之一创建范围对象: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
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。我假设你的答案是正确的。我会把你的答案标记为正确的,过几个月我就能真正理解你写的东西时再回来。谢谢