Scala 中的继承组合
composition over inheritance in scala
我创建了一个实际使用继承的代码
任何其他替代方法,如果我想为此使用合成
case class Test(message:msg)
abstract class MsgValuetype(value: myString) {
override def toString = s"${value.value}"
}
case class msg(id:String) extends MsgValuetype(myString(id))
case class myString(value: String){
override def toString = s"$value"
}
下面是我最后一次测试上面的调用。我只希望字符串是 passed.Please 注意实际的 classes 在我的使用中更复杂 case.I 刚刚尝试过以简单的方式获得替代解决方案。
Test(msg("123"))
更新 1
如果我尝试将 MsgValuetype 作为 msg case 的一部分 class 而不是扩展它。
case class Test(message:msg)
case class MsgValuetype(value: myString) {
override def toString = s"${value.value}"
}
case class msg(id:String,myType:MsgValuetype)
case class myString(value: String){
override def toString = s"$value"
}
我需要在下面调用初始化
Test(msg("123",MsgValuetype(myString("123"))))
我只想拨打
Test(msg("123"))
也许是这样的?
case class msg(id: String) { val myType = MsgValuetype(myString(id)) }
您在更新中完成的方式就是要走的路,像这样定义 msg
case class msg(id:String,myType:MsgValuetype)
您唯一需要添加的是带有重载 apply 方法的 msg 伴随对象
object msg {
def apply(id : String): msg = msg(id, MsgValuetype(myString(id)))
}
不是你可以创建测试
Test(msg("123"))
我创建了一个实际使用继承的代码
任何其他替代方法,如果我想为此使用合成
case class Test(message:msg)
abstract class MsgValuetype(value: myString) {
override def toString = s"${value.value}"
}
case class msg(id:String) extends MsgValuetype(myString(id))
case class myString(value: String){
override def toString = s"$value"
}
下面是我最后一次测试上面的调用。我只希望字符串是 passed.Please 注意实际的 classes 在我的使用中更复杂 case.I 刚刚尝试过以简单的方式获得替代解决方案。
Test(msg("123"))
更新 1
如果我尝试将 MsgValuetype 作为 msg case 的一部分 class 而不是扩展它。
case class Test(message:msg)
case class MsgValuetype(value: myString) {
override def toString = s"${value.value}"
}
case class msg(id:String,myType:MsgValuetype)
case class myString(value: String){
override def toString = s"$value"
}
我需要在下面调用初始化
Test(msg("123",MsgValuetype(myString("123"))))
我只想拨打
Test(msg("123"))
也许是这样的?
case class msg(id: String) { val myType = MsgValuetype(myString(id)) }
您在更新中完成的方式就是要走的路,像这样定义 msg
case class msg(id:String,myType:MsgValuetype)
您唯一需要添加的是带有重载 apply 方法的 msg 伴随对象
object msg {
def apply(id : String): msg = msg(id, MsgValuetype(myString(id)))
}
不是你可以创建测试
Test(msg("123"))