2015-10-27 3 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 
} 

Затем вы можете использовать NewA из your_package так же, как вы бы использовать A:

import your_package.NewA 

NewA.foo(...) 
0

Вы можете использовать неявные преобразования для преобразования NewA в A

implicit convertNewA2A(newA: NewA.type) = A 

NewA.foo(...) 

В качестве альтернативы, вы можете учитывать методы A из в черте, с которой объекты как компаньон расширится.

Смежные вопросы