我正在寻找允许用户选择方法实现而不重复自己的最简洁方法。在下面的情况中,每个子类将XML中的问候语与特定类的参数放在一起。因此,方法singleton_method_added
detect_from_url_2
detect_from_symbol_2
在特征中被声明为抽象。然而,我想要检查是否在类的构造中传入toXML
,如果是,则使用对所有Greeting的实现共同的一般XML问候,例如_generalMessage
。我知道我可以在<Message>_generalMessage</Message>
的每个实现中对_generalMessage
的存在进行模式匹配,但我很好奇是否有更优雅的方式。
Greeting
答案 0 :(得分:2)
使toXML
成为最终,并在基本特征中定义:
final def toXML = _generalMessage.fold(specific message) { m =>
<Message>m</Message>
}
然后将子类中的specificMessage
定义为您当前拥有的toXML
。