【发布时间】:2017-12-19 05:24:30
【问题描述】:
我需要你的帮助来解决我遇到的这个 Scala 问题。
我有一个类层次结构:车辆只有每个车辆的公共变量,然后是 3 个子类:汽车、卡车和摩托车,每个人都有自己的特定变量。 我在辅助对象方法中使用模式匹配来根据车辆类型进行一些转换:
object Transformation {
def someTransformation(vehicle:Vehicle):Vehicle = {
vehicle match {
case Car(<<<vars>>>) => Car(<<< transformed vars>>>)
case Truck(<<<vars>>>) => Truck(<<< transformed vars>>>)
case MotorCycle(<<<vars>>>) => MotorCycle(<<< transformed vars>>>)
}
}
}
我的问题是当我必须对其进行测试时,因为我要返回车辆(假设是一个 mixin),我必须在每次它出现时进行强制转换才能访问所涉及车辆的私有变量。 我想要一种方法让这段代码保持原样,并在测试中访问私有成员而不进行强制转换,因为我知道我作为参数收到的车辆与我返回的车辆类型相同。 这可以通过泛型解决吗?如何?
谢谢,希望可以理解。
【问题讨论】:
-
我猜你的意思不是真的
private类的成员,只是子类特定的? -
正是 Nimrod Argov
标签: scala casting pattern-matching