當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。