【发布时间】:2011-02-20 20:29:32
【问题描述】:
我正在寻找类似于 JodaTime 或 JSR 310 for Scala 的东西,它利用了很好的 Scala 特性,例如运算符重载,并且不依赖于隐式转换(我对隐式转换有一种非理性的恐惧)。
我知道http://github.com/jorgeortiz85/scala-time,但它只是在暗示 JodaTime。
【问题讨论】:
-
您在寻找提供 运算符的东西吗?
-
我建议你摆脱对隐式转换的非理性恐惧。 ;-)
-
@Timo - 我想要比较操作,以及 + 和减号之类的东西。 @Jesper - 恐惧并非完全不合理。隐式会影响性能。它们可以引发与平等等事物的奇怪互动。它们依赖于类型推断,我发现混合大量依赖于类型推断的东西是绝对混淆的好方法。
-
如果您想通过运算符重载将 JodaTime 与 Scala 一起使用以进行比较等,您可以构建 JodaTime 的替代版本,例如将 Ordered trait 方法添加到 AbstractPartial 和 AbstractInstant。我知道这是有风险的,但我也不喜欢 Pimp-my-library 使用的隐式转换。
-
性能:热点中的逃逸分析可以消除这里的一些开销。但我还没有确切的数字。平等:如果您在 A 上定义一个“新方法”并转换为 B,那么只有在新方法中返回 B 类型的东西(不再是 A)时,才会混淆平等。我认为,这是 RichString 不对称的问题。