2015-11-25 30 views
3

在閱讀斯卡拉源代碼時,我碰到以下scala/package.scala 我不完全明白我們爲什麼需要traitval在同一時間。 trait關鍵字會爲班級別名,那麼爲什麼我們需要val斯卡拉val和類型在同一時間

type StringBuilder = scala.collection.mutable.StringBuilder 
    val StringBuilder = scala.collection.mutable.StringBuilder 

    // Numeric types which were moved into scala.math.* 

    type BigDecimal = scala.math.BigDecimal 
    val BigDecimal = scala.math.BigDecimal 

    type BigInt = scala.math.BigInt 
    val BigInt = scala.math.BigInt 

    type Equiv[T] = scala.math.Equiv[T] 
    val Equiv = scala.math.Equiv 

上午,包括泛型類型實例以及獲取有關多次聲明更多的理解有良好。

回答

7

這是因爲type只定義了一個類型別名;它不會別名類型的伴侶對象。

伴侶對象通常包含方便的方法,特別是用於創建類型對象的方法apply。如果您沒有執行val,那麼您將無法訪問這些方法,至少不會使用別名的名稱。

+0

哇!有趣的是,當我點擊'type'行時,Intellij帶我進入類定義,當我點擊'val'行時,它將我帶入對象定義。 –