首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scala范围构造函数API

Scala范围构造函数API
EN

Stack Overflow用户
提问于 2016-01-31 16:19:55
回答 2查看 153关注 0票数 1

在Scala中,我们可以通过以下两种方法来创建Range对象:

代码语言:javascript
运行
复制
var range = 1 to 10

或者使用构造函数

代码语言:javascript
运行
复制
var range = new Range(1,10,1)

但是,如果我们查看Scala API for Range,我们只能看到一个定义了3个参数的构造函数。因此,我的问题是:在哪里可以找到像第一个构造函数那样的API?我希望在API页面上找到这些信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-31 16:30:32

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

步骤1:将Int隐式转换为RichInt,并在scala.Predef中定义内建隐式转换

代码语言:javascript
运行
复制
@inline implicit def intWrapper(x: Int)         = new runtime.RichInt(x)

步骤2:将RichInt.to委托给Range.inclusive

代码语言:javascript
运行
复制
def to(end: Int): Range.Inclusive = Range.inclusive(self, end)

步骤3:使用Range函数构造Range.inclusive对象

代码语言:javascript
运行
复制
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)
票数 6
EN

Stack Overflow用户

发布于 2016-02-01 05:50:08

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35116088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档