2015-10-27 108 views
1

我有一個同伴對象下列情況下類:同伴對象的類型別名

case class A(boo:String) 
object A{ 
def foo(x:a) = ... 
} 

而且我有以下類型別名在我的包對象:

type NewA = A 

我希望所有的方法在伴侶對象中處於NewA的伴侶對象中。我知道這樣做的一種方式,但它不是很好:

object NewA{ 
    val instance = A 
} 
NewA.instance.foo(...) 

有沒有什麼方法可以用更好的方式寫出來?

回答

8

只需添加一個val以引用A您的包對象:

package object your_package { 
    type NewA = A 
    val NewA = A 
} 

然後你可以使用NewAyour_package就像你會使用A

import your_package.NewA 

NewA.foo(...) 
0

你可以使用隱式轉換爲NewA轉化爲A

implicit convertNewA2A(newA: NewA.type) = A 

NewA.foo(...) 

此外,也可以因素A方法伸到從兩個同伴對象擴展特性。