我有以下case类和一个伴侣对象:
case class A(boo:String)
object A{
def foo(x:a) = ...
}
我的包对象中有以下类型别名:
type NewA = A
我希望伴随对象中的所有方法都在NewA的伴随对象中。我知道有一种方法可以做到,但这并不好:
object NewA{
val instance = A
}
NewA.instance.foo(...)
有没有办法以更好的方式写它?
答案 0 :(得分:9)
只需在引用val
的包对象中添加A
:
package object your_package {
type NewA = A
val NewA = A
}
然后您可以使用NewA
中的your_package
,就像使用A
一样:
import your_package.NewA
NewA.foo(...)
答案 1 :(得分:0)
您可以使用隐式转化将NewA
转换为A
implicit convertNewA2A(newA: NewA.type) = A
NewA.foo(...)
或者,您可以将A
的方法分解为两个伴随对象扩展的特征。