我试图使用隐式转换scala中的选项值到String但不知何故它的工作.这是我的语法 -
object ToStringParser{
implicit def optionAnyToString[T](input: Option[T]):String = {
input match {
case Some(i) => i.toString
case None => "NULL"
}
}
}
Run Code Online (Sandbox Code Playgroud)
而我正在使用它 -
import domain.processors.ToStingParser._
println(submitDate)
Run Code Online (Sandbox Code Playgroud)
但这总是印刷 -
Some(2016-08-02T17:55:03.000-04:00)
Run Code Online (Sandbox Code Playgroud)
我们如何隐含选项
你的问题是println接受一个类型的参数Any,所以它无法知道你希望它使用你的隐式转换,你必须以某种方式告诉它你想要一个String,而不是一个Option.
这样可以:println(submitDate: String),所以这样:def puts(s: String) = println(s); puts(submitDate).
但是,与在这种情况下明确地执行此操作相比,它似乎并没有为您节省太多:
println(submitDate.getOrElse("NULL"))
Run Code Online (Sandbox Code Playgroud)
这对读者来说会更加清晰.