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