Scala - 在特征中有条件地实现的方法?

时间:2016-07-04 02:46:13

标签: scala

我正在寻找允许用户选择方法实现而不重复自己的最简洁方法。在下面的情况中,每个子类将XML中的问候语与特定类的参数放在一起。因此,方法singleton_method_added detect_from_url_2 detect_from_symbol_2 在特征中被声明为抽象。然而,我想要检查是否在类的构造中传入toXML,如果是,则使用对所有Greeting的实现共同的一般XML问候,例如_generalMessage。我知道我可以在<Message>_generalMessage</Message>的每个实现中对_generalMessage的存在进行模式匹配,但我很好奇是否有更优雅的方式。

Greeting

1 个答案:

答案 0 :(得分:2)

使toXML成为最终,并在基本特征中定义:

  final def toXML = _generalMessage.fold(specific message) { m =>
       <Message>m</Message>
  }

然后将子类中的specificMessage定义为您当前拥有的toXML