隐式转换选项[T]到String

tes*_*k03 0 scala

我试图使用隐式转换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)

我们如何隐含选项

Dim*_*ima 5

你的问题是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)

这对读者来说会更加清晰.