Spec-Zone.ru › Scala 2.13 Library

Пакет scala.concurrent.duration

пакет duration

Источник
package.scala
Линейные надтипы
AnyRef, Any

Члены типов

служебный классDeadline extends Ordered[Deadline] with Product with Serializable

Этот класс хранит крайний срок, полученный с помощью Deadline.now или языка выражений для продолжительности:

import scala.concurrent.duration._
3.seconds.fromNow

Его основное назначение — управление повторными попытками достижения чего-либо (например, ожидания условия) путём предоставления методов hasTimeLeft и timeLeft. Все продолжительности измеряются в соответствии с System.nanoTime; это не учитывает изменения системного времени (например, високосные секунды).

явное конечное классDoubleMult extends AnyVal

запечатанный абстрактный класс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

Язык выражений, предоставляемый неявными преобразованиями, всегда позволяет создавать конечные продолжительности, даже для бесконечных входных данных 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 можно использовать в качестве безналогового контейнера для пары (длина, единица), если он создаётся с помощью соответствующих методов и не выполняется арифметическое действие над ним; сложение/вычитание продолжительностей в этом случае следует проводить с осторожностью.

Соответствие семантике Double

Семантика арифметических операций с продолжительностью имеет двойной характер:

    точная операция сложения/вычитания с разрешением в наносекунды для конечных продолжительностей, независимо от величины слагаемыхизоморфно java.lang.Double в отношении бесконечных или неопределенных значений

Преобразование между Duration и Double выполняется с помощью Duration.toUnit (с единицей NANOSECONDS) и Duration.fromNanos(Double)

Сортировка

По умолчанию используется порядок, согласованный с порядком чисел Double, что означает, что Undefined считается большим, чем все другие продолжительности, включая Duration.Inf.

трактDurationConversions extends Any

явное конечное классDurationDouble extends AnyVal with DurationConversions

явное конечное классDurationInt extends AnyVal with DurationConversions

явное конечное классDurationLong extends AnyVal with DurationConversions

конечный классFiniteDuration extends Duration

Этот класс представляет конечную продолжительность. Его операторы сложения и вычитания перегружены, чтобы сохранить эту гарантию статически. Диапазон этого класса ограничен +-(2^63-1)ns, which is roughly 292 years.

явное конечное классIntMult extends AnyVal

явное конечное классLongMult extends AnyVal

типTimeUnit = java.util.concurrent.TimeUnit

Значения членов

final val DAYS: java.util.concurrent.TimeUnit(DAYS)

final val HOURS: java.util.concurrent.TimeUnit(HOURS)

final val MICROSECONDS: java.util.concurrent.TimeUnit(MICROSECONDS)

final val MILLISECONDS: java.util.concurrent.TimeUnit(MILLISECONDS)

final val MINUTES: java.util.concurrent.TimeUnit(MINUTES)

final val NANOSECONDS: java.util.concurrent.TimeUnit(NANOSECONDS)

final val SECONDS: java.util.concurrent.TimeUnit(SECONDS)

implicit def durationToPair(d: Duration): (Long, TimeUnit)

implicit def pairIntToDuration(p: (Int, TimeUnit)): Duration

implicit def pairLongToDuration(p: (Long, TimeUnit)): FiniteDuration

object Deadline extends java.io.Serializable

object Duration extends java.io.Serializable

object DurationConversions

object FiniteDuration extends java.io.Serializable

object fromNow

Этот объект может использоваться в качестве завершающего маркера для объявления дедлайна в какой-то будущей точке во времени:

import scala.concurrent.duration._

val deadline = 3 seconds fromNow

object span

Этот объект может использоваться в качестве завершающего маркера, если вы предпочитаете стиль без точек, но не хотите включать language.postfixOps:

import scala.concurrent.duration._

val duration = 2 seconds span

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala/concurrent/duration/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API