Spec-Zone.ru › Scala 2.12 Library

Пакет scala.concurrent.duration

пакет duration

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

Типовые члены

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

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

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

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

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

Семантика арифметических операций над Duration двойная:

    точная операция сложения/вычитания с разрешением в наносекунды для конечных продолжительностей, независимо от величины слагаемыхизоморфна 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)нс, что примерно составляет 292 года.

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

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

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

Члены-значения

final val DAYS: java.util.concurrent.TimeUnit(ДНИ)

final val HOURS: java.util.concurrent.TimeUnit(ЧАСЫ)

final val MICROSECONDS: java.util.concurrent.TimeUnit(МИКРОСЕКУНДЫ)

final val MILLISECONDS: java.util.concurrent.TimeUnit(МИЛЛИСЕКУНДЫ)

final val MINUTES: java.util.concurrent.TimeUnit(МИНУТЫ)

final val NANOSECONDS: java.util.concurrent.TimeUnit(НАНОСЕКУНДЫ)

final val SECONDS: java.util.concurrent.TimeUnit(СЕКУНДЫ)

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

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

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

object Deadline extends Serializable

object Duration extends Serializable

object DurationConversions

object FiniteDuration extends Serializable

object fromNow

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

import scala.concurrent.duration._

val deadline = 3 seconds fromNow

object span

Этот объект можно использовать в качестве завершающего маркера, если вы предпочитаете точечный стиль, но не хотите включать язык.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.12.9/scala/concurrent/duration/index.html

Spec-Zone.ru

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