我试图使用方法从类中调用超级构造函数。整个设置如下:
class Straight(hand: Hand) extends Combination(Straight.makeHandAceLowIfNeeded(hand), 5)
object Straight {
private def makeHandAceLowIfNeeded(hand: Hand): Hand = {
...
}
}
虽然这会编译,但它有一些相当奇怪的运行时行为。在调试时,我注意到Straight实例定义了两次“hand”属性。有人可以告诉我发生了什么,以及用不同的参数调用超级构造函数的正确方法是什么? 在我的用例中,我想用一个修改过的手调用超级构造函数,其中我将一张卡替换为原始构造函数参数。
带有重复字段的调试程序屏幕截图:
答案 0 :(得分:0)
这是调用超类构造函数的一种非常好的方法。这是两个私有字段,它们不会冲突,但您可以重命名其中一个以避免在调试期间出现混淆(或者如果您想从子类访问超类的值)。但是,如果类参数在构造函数外部使用,则只应为类参数生成该字段,在您的情况下,它似乎不是。您是否简化了Straight
的定义?