相关疑难解决方法(0)

Scala隐式使用选择

我一直想知道透明 implicit转换是否真的是一个好主意,是否真的可以更好地使用implicits更多,嗯,明确.例如,假设我有一个接受a Date作为参数的方法,并且我有一个隐式转换,它将a String转换为Date:

implicit def str2date(s: String) : Date = new SimpleDateFormat("yyyyMMdd").parse(s)

private def foo(d: Date)
Run Code Online (Sandbox Code Playgroud)

那显然我可以通过透明implicit转换来调用它:

foo("20090910")
Run Code Online (Sandbox Code Playgroud)

将字符串转换为更明确的日期这一事实会更好吗?

class DateString(val s: String) { 
  def toDate : Date = new SimpleDateFormat("yyyyMMdd").parse(s) 
}

implicit def str2datestr(s: String) : DateString = new DateString(s)
Run Code Online (Sandbox Code Playgroud)

那么用法看起来更像是:

foo("20090910".toDate)
Run Code Online (Sandbox Code Playgroud)

这样做的好处是稍后会发生什么事情更清楚 - 我现在已经被implicit我应该知道的透明转换(OptionIterable任何人?)已经被抓了几次,这种用法仍然允许我们利用implicit秒.

scala implicit

23
推荐指数
2
解决办法
2244
查看次数

标签 统计

implicit ×1

scala ×1