让我说我有这样的事情:
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那样)?
答案 0 :(得分:0)
您可以使用隐式“添加”方法到现有类。您可以使现有类成为子类,或者使用新类或特征传递isInstanceOf测试。 但是,您可以使用自己的unapply方法使模式匹配执行您喜欢的任何操作。