1
私は、ユーザーが自分自身を繰り返さずにメソッドの実装を選択できるようにする最もクリーンな方法を模索しています。以下の状況では、各サブクラスは特定のクラスのパラメータとともにXMLで挨拶をまとめます。したがって、方法toXML
は形質において抽象的であると宣言される。しかし、私が欲しいのは、クラスの構築で_generalMessage
が渡されたかどうかをチェックし、そうであれば、Greetingのすべての実装に共通の一般的なXML挨拶を使用することです。 <Message>_generalMessage</Message>
。 Greeting
の各実装で_generalMessage
の存在をパターンマッチさせることができますが、もっとエレガントな方法があれば私は興味があります。Scala - 条件付きで特性で実装されたメソッド?
trait Greeting {
protected var foo = //...
protected var _generalMessage: Option[Srting] = None
//...
//public API
def generalMessage: String = _generalMessage match {case Some(x) => x; case None =>""
def generalMessage_=(s: String) {_generalMessage = Some(s)}
protected def toXML: scala.xml.Node
}
class specificGreeting1 extends Greeting {
// class implementation
def toXML: scala.xml.Node = <//a detailed XML with values from class specificGreeting1>
}
// multiple other specificGreeting classes
美しく機能的な回答 – Azeli