OxL Справочник OxL
РусскийEnglish

data Duration

Exact time interval in nanoseconds (§17.1). Literals: 250ms, 1h30m.

Example:

oxl✓ проверяется в CI
fn main() io {
  let timeout: Duration = 1h30m
  print("{timeout.minutes()} {(250ms).millis()}")
}
Вывод
90 250

Примеры#

Рецепты для длительностей: литералы, арифметика, разбор текста и измерение.

Длительности#

Литералы 1h30m, 45s, 500ms имеют тип Duration; длительности складываются, умножаются на число и сравниваются. now() и sleep требуют эффекта time.

oxl✓ проверяется в CI
fn main() io, time {
  let a = 1h30m  // составные литералы: 1h30m = 90 минут
  let b = 45s + 500ms
  print("{a.minutes()} min, {b.millis()} ms, {b.secondsF()} s")
  print("{(a * 2).hours()} h, {(a / 3).minutes()} min, {a > b}")
  print("{Duration.ofSeconds(125).minutes()} {Duration.ofMillis(2500).secondsF()} {(0s - 5s).isNegative()}")
  match Duration.parse("2h15m") {
    Duration d => print("{d.minutes()}")
    ParseError => print("bad duration")
  }
  let start = now()  // now() читает часы: нужен эффект time
  sleep(20ms)
  print("{now() - start >= 20ms}")
}
Вывод
90 min, 45500 ms, 45.5 s
3 h, 30 min, true
2 2.5 true
135
true
@builtin("Duration") pub(api) data Duration

Потокобезопасность. an immutable value.

С версии. 1.0.0-beta

Определено в: std/core/types.oxl:96

См. также

OxL 1.0.0-beta · Версия документации 1.0.0-beta© OxwaldLink · сгенерировано из Стандарта, исходников std и руководства