我是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