在 Scala 中是否可以这样写:
trait Road {
...
}
class BridgeCauseway extends Road {
// implements method in Road
}
class Bridge extends Road {
val roadway = new BridgeCauseway()
// delegate all Bridge methods to the `roadway` member
}
或者我需要实现每个Road
的方法一一进行,并调用对应的方法roadway
?
实现此目的的最简单方法是使用隐式转换而不是类扩展:
class Bridge { ... }
implicit def bridge2road(b: Bridge) = b.roadway
只要你不需要原件Bridge
随身携带(例如,您要存储Bridge
在集合中Road
).
如果您确实需要获得Bridge
再次回来,您可以添加一个owner
中的方法Road
它返回一个Any
,使用构造函数参数设置它BridgeCauseway
,然后进行模式匹配以获得您的桥梁:
trait Road {
def owner: Any
...
}
class BridgeCauseway(val owner: Bridge) extends Road { . . . }
class Bridge extends Road {
val roadway = new BridgeCauseway(this)
...
}
myBridgeCauseway.owner match {
case b: Bridge => // Do bridge-specific stuff
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)