如何完成隐式类

时间:2016-04-13 01:49:02

标签: scala

我正在尝试编写一个为日期添加天数的隐式类。

我知道我需要两个隐式类。一个用于LocalDate,一个用于int。

但是,我仍然坚持如何完成这些方法。

implicit class RichLocalDate(d:LocalDate) {
  def +(day: LocalDate):Path = ???
}

implicit class RichInt(n:Int){
  def jan():LocalDate = LocalDate.of(2016,1,n)

  def feb():LocalDate = LocalDate.of(2016,2,n)

  def mar():LocalDate = LocalDate.of(2016,3,n)
  ....
  ???
}
}

2 个答案:

答案 0 :(得分:2)

样品:     

object Pimpeds {
  implicit class PimpedLocalDate[LocalDate](date: LocalDate) {
    def +(days: Int) = date.plusDays(days)
  }
}

当您需要时:

import Pimpeds._

val myDate: LocalDate = ...
myDate.+(2)

答案 1 :(得分:1)

首先添加两个LocalDate是没有意义的(即你的def +(day: LocalDate):Path方法)。您想要成为2016年1月1日+ 2016年1月1日:4032年2月2日的结果?您最有可能需要+(amount: TemporalAmount)(请参阅https://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAmount.html),只需要调用plus方法。