用法 二
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 duration.Deadline用法及代碼示例
- Scala duration.span用法及代碼示例
- Scala duration.fromNow用法及代碼示例
- Scala double.<=用法及代碼示例
- Scala double.ToLong用法及代碼示例
- Scala double.Min用法及代碼示例
- Scala double.Max用法及代碼示例
- Scala double.Negate用法及代碼示例
- Scala double.ToInt用法及代碼示例
- Scala double.-用法及代碼示例
- Scala double.<用法及代碼示例
- Scala double.ToFloat用法及代碼示例
- Scala double.>=用法及代碼示例
- Scala double.%用法及代碼示例
- Scala double./用法及代碼示例
- Scala double.*用法及代碼示例
- Scala double.+用法及代碼示例
- Scala double.>用法及代碼示例
- Scala double.Abs用法及代碼示例
- Scala Tabulate.sliding用法及代碼示例
- Scala ArrayBuffer.inits用法及代碼示例
- Scala long.BitwiseOr用法及代碼示例
- Scala StringBuilder.partitionMap用法及代碼示例
- Scala List distinct()用法及代碼示例
- Scala DefaultMap.sizeIs用法及代碼示例
注:本文由純淨天空篩選整理自scala-lang.org大神的英文原創作品 duration.Duration。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。