Unidades de Medida
Define y rastrea unidades para reducir bugs de análisis dimensional.
Unidades de Medida
Sounio tiene sintaxis dedicada para unidades de medida, para que los programas lleven significado dimensional a través del sistema de tipos.
Declaraciones de Unidad
Las unidades se declaran a nivel superior y, actualmente, requieren ; al final:
unit kg;
unit g = 0.001 * kg;
unit mg = 0.001 * g;
Las unidades se pueden combinar con multiplicación, división y exponentes:
unit m;
unit s;
unit N = kg * m / s^2;
Cantidades (Número + Unidad)
El compilador soporta una forma de tipo para cantidades:
Quantity[f64, mg]
Quantity[f64, kg*m/s^2]
Para asignar un tipo de unidad a un literal numérico, usa @:
unit kg;
unit g = 0.001 * kg;
unit mg = 0.001 * g;
fn main() {
let dose: Quantity[f64, mg] = 500.0@Quantity[f64, mg]
let half = 250.0@Quantity[f64, mg]
let total = dose + half
}
Especificación vs Implementación
El objetivo a largo plazo es verificación y conversiones de unidades en tiempo de compilación para evitar incompatibilidades (por ejemplo, no puedes sumar una longitud con una masa).
Hoy, las unidades y los tipos de cantidad se parsean y son representables, pero la verificación completa de incompatibilidades puede no estar aplicada en todos los modos del compilador. Trata las unidades como una anotación de corrección hasta que el checker de unidades esté integrado end-to-end.