22 · Expresiones Temporales
Sufijos de unidades declarados
Asocia @unit a un newtype escalar para dar un sufijo tipado a los literales. Conserva el tipo nominal y la precisión escalar. Un sufijo solo no define conversión: declara dimensiones y escalas para convertir automáticamente.
En esta página
Asocia @unit a un newtype escalar para dar un sufijo tipado a los literales. Conserva el tipo nominal y la precisión escalar. Un sufijo solo no define conversión: declara dimensiones y escalas para convertir automáticamente.
Ejemplo completo
Sufijos de unidades declarados.
20-typed-units.zolo
// Declared suffixes retain exact scalar spelling and nominal ownership.
@unit("kg") newtype Mass(decimal) where |value| value >= 0d
@unit("g") newtype Grams(decimal)
@unit("crate") newtype Crates(int)
let parcel = 2.5kg
let total = parcel + 0.5kg
print(total.unwrap()) // expected: 3.0
print((parcel * 2d).unwrap()) // expected: 5.0
print(parcel / 0.5kg) // expected: 5
print(parcel > 1kg) // expected: true
let grams = 500g
let converted = Mass.new(grams.unwrap() / 1000d).unwrap()
print(converted.unwrap()) // expected: 0.50
let stock = 8crate
print((stock / 2).unwrap()) // expected: 4
print(stock / 2crate) // expected: 4
Reglas y comportamiento
Validación, esquemas y unidades · Documentación
Desde un checkout del repositorio:
zolo examples/features/01-syntax-and-types/20-typed-units.zolo
Consulta también