我使用来自https://github.com/nscala-time/nscala-time的nsacala-time软件包。
import com.github.nscala_time.time.Imports._
DateTime.now.hour(0)
res0: org.joda.time.DateTime = 2015-06-11T22:33:52.266+08:00
将获得一个新的DateTime对象。 但是在源代码https://github.com/nscala-time/nscala-time/blob/master/src/main/scala/com/github/nscala_time/time/RichDateTime.scala中,它没有带签名(Int)的小时函数。 似乎withHour(小时:Int)做了确切的工作。
答案 0 :(得分:2)
无处不在的转换(a.k.a Black Magic,a.k.a为什么每个人都讨厌Scala)!!!
hour
会返回org.joda.time.DateTime.Property
。
Import._
导入RichDateTimeProperty
RichDateTimeProperty
定义了apply
方法,默认情况下,如果something()
不是something
方法转换为something.apply()
,则Scala执行def apply(value: Int): DateTime = underlying.setCopy(value)
,所以最后通过2次隐式转换调用此方法:
{{1}}