[英]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的回答解釋了如何to
與until
的工作,但最終,你的問題並沒有真正有一個答案。 Range
的介紹性材料提到until
,但是to
和until
在那里沒有記錄,因為它們不是Range
構造函數或伴侶對象方法。 Scaladoc無法將通過RichInt
的間接路徑連接到Range
的頁面。 也許應該。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.