簡體   English   中英

Scala Range構造函數API

[英]Scala Range constructors APIs

在Scala中,我們可以執行以下任一操作來創建Range對象:

var range = 1 to 10

或者改為使用構造函數

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

但是,如果查看Scala API for Range ,我們只能看到一個定義的構造函數,該構造函數帶有3個參數。 所以我的問題是:在哪里可以找到第一個構造函數的API? 我希望可以在API頁面上找到此信息。

第一句語法糖實際上是通過以下步驟實現的。

步驟1:使用RichInt中定義的scala.Predef隱式轉換將Int隱式轉換為scala.Predef

@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的回答解釋了如何tountil的工作,但最終,你的問題並沒有真正有一個答案。 Range的介紹性材料提到until ,但是tountil在那里沒有記錄,因為它們不是Range構造函數或伴侶對象方法。 Scaladoc無法將通過RichInt的間接路徑連接到Range的頁面。 也許應該。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM