我正在寻找类似于Scoda的JodaTime或JSR 310的东西,它利用了很好的Scala功能,例如运算符重载,并且不依赖于隐式转换(我对隐式转换有一种非理性的恐惧)。
我知道http://github.com/jorgeortiz85/scala-time,但它只是让JodaTime陷入困境。
答案 0 :(得分:3)
隐式转换没有错。即使Java库未用于底层逻辑,任何设计合理的纯Scala库仍然会使用implicits,允许您编写5.days + 3.minutes
等表达式。
并非所有implicits都是相同的,隐式转换为您完全控制的非常特定的类型几乎肯定是安全的。
正如其他人已经说过的那样,在大多数情况下,这种转换会被优化掉,特别是在启用转义分析的情况下,所以不要让他们担心你!
在JSR 310最终确定之前,joda-time是你最好的。
除了需要遵循Java命名约定和缺乏运算符重载之外,joda-time已经非常适合惯用的Scala。该设计本质上非常实用,特别是它包含不可变性的方式,因此scalaj-time实际上只是图书馆周围非常薄的包装。
您还可以获得scalaj-time可以轻松升级以使用JSR 310的好处,因此在那时迁移代码会少得多。
自2.8以来,scala-time已重命名为scalaj-time:http://github.com/scalaj/scalaj-time