Scala:我不能控制其来源的对象是否可以扩展特征?

时间:2016-01-23 01:40:10

标签: scala

让我说我有这样的事情:

object IceCream {
  trait IceCream
  case object ChocolateIceCream extends IceCream
  case object VanillaIceCream   extends IceCream
}

其源代码不是我的,我无法改变。在另一个程序中,我想重复使用它,并使所有冰淇淋口味成为另一个特性的一部分。我被迫打包他们,做这样的事情吗?:

object ThingsILike{
  import IceCream._

  trait ThingsILike
  case object  Chocolate                   extends ThingsILike
  case class   IceCreamWrapper(x:IceCream) extends ThingsILike
}

或者语言是否提供了一种自然地扩展它们的方法(像Swift那样)?

1 个答案:

答案 0 :(得分:0)

您可以使用隐式“添加”方法到现有类。您可以使现有类成为子类,或者使用新类或特征传递isInstanceOf测试。 但是,您可以使用自己的unapply方法使模式匹配执行您喜欢的任何操作。