我是Scala的新手,並且在隱式函數中纏繞一些麻煩。在Scala中概括隱式函數
說我有寫的是
implicit def stringToOption(s: String): Option[String] = if(s.isEmpty) { None } else { Some(s) }
然後,我有,要麼可以或不可以有一個屬性<thing>
我也有一個XML樹,輪流Strings
到Option[String]
的隱函數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")
}
有沒有一種方法來存儲這樣的隱函數,這兩個獨立的類都知道轉String
成兩個Option[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