别名

时间:2015-10-27 23:14:55

标签: scala

我有以下case类和一个伴侣对象:

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

我的包对象中有以下类型别名:

type NewA = A

我希望伴随对象中的所有方法都在NewA的伴随对象中。我知道有一种方法可以做到,但这并不好:

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

有没有办法以更好的方式写它?

2 个答案:

答案 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的方法分解为两个伴随对象扩展的特征。