私はスカラを使い慣れていません。スカラで暗黙関数を一般化する
は、私はその後、私はどちらかのか、私も持っている属性<thing>
を持っていませんでしたでしたXMLツリーを持って
implicit def stringToOption(s: String): Option[String] = if(s.isEmpty) { None } else { Some(s) }
を書かれているOption[String]
にStrings
をオン暗黙の機能を持っていると言います次のような暗黙の関数を使用する2つのクラス:
case class ClassA(field: Option[String])
object ClassA {
implicit val decoder(nodeSeq: NodeSeq) =>
ClassA(field = nodeSeq \@ "thing")
}
そして
case class ClassB(field: Option[String])
object ClassB {
implicit val decoder(nodeSeq: NodeSeq) =>
ClassB(field = nodeSeq \@ "thing")
}
は、これらの別々のクラスの両方が両方にOption[String]
にString
を回すために知っているような暗黙の機能を保存する方法はありますか?
通常、私のようなクラスのいずれかにstringToOption
に固執します:
case class ClassB(field: Option[String])
object ClassB {
implicit def stringToOption(s: String): Option[String] = if(s.isempty) {None} else {Some(s)}
implicit val decoder(nodeSeq: NodeSeq) =>
ClassB(field = nodeSeq \@ "thing")
}
しかし、私はそれが両方のクラスのために利用できるように、どこか別の場所に固執したいと私はリライトする必要はありません。それは両方でそうである。これは可能ですか?
ありがとうございます。
ここで 'stringToOption'を使用しますか? –
うまく説明するために質問を編集しました。ありがとう! – LivingRobot