当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala duration.Duration用法及代码示例


用法 一

object Duration

伴生:

class

源码:

Duration.scala

用法 二

sealed abstract class Duration extends Serializable with Ordered[Duration]

用于处理 java.util.concurrent.TimeUnit 持续时间的实用程序。

此类不是作为时间的通用表示,它针对 scala.concurrent 的需求进行了优化。

基本用法

例子:

import scala.concurrent.duration._

val duration = Duration(100, MILLISECONDS)
val duration = Duration(100, "millis")

duration.toNanos
duration < 1.second
duration <= Duration.Inf

调用无法表达的转换(如无限期调用 toSeconds)将引发 IllegalArgumentException。

还为 Int、Long 和 Double 提供了隐式。示例用法:

import scala.concurrent.duration._

val duration = 100.millis

隐式转换提供的 DSL 始终允许构造有限的持续时间,即使对于无限的 Double 输入也是如此;改用 Duration.Inf。

提取器、解析和算术也包括在内:

val d = Duration("1.2 µs")
val Duration(length, unit) = 5 millis
val d2 = d * 2.5
val d3 = d2 + 1.millisecond

时间单位的处理

在有限持续时间上执行的计算始终保留任一操作数的更精确单位,无论更粗略的单位是否能够准确表示相同的持续时间。这意味着 Duration 可以用作(长度,单位)对的无损容器,如果它是使用相应的方法构造的并且不对其执行任何算术运算;在这种情况下,应小心添加/减去持续时间。

对应双重语义

Duration 上算术运算的语义是two-fold:

- 在有限的持续时间内以纳秒分辨率精确加/减,与被加数的大小无关 - 当涉及到无限或未定义的值时,与 java.lang.Double 同构

Duration 和 Double 之间的转换是使用 Duration.toUnit(单位为 NANOSECONDS)和 Duration.fromNanos(Double) 完成的

排序

默认排序与 Double 数字的排序一致,这意味着 Undefined 被认为大于所有其他持续时间,包括 Duration.Inf

伴生:

object

源码:

Duration.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 duration.Duration。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。