09 · Estructuras de Datos
Construcción contextual
Cuando se espera un tipo struct exacto, .{ campos } construye ese struct sin repetir su nombre. Siguen aplicándose los valores por defecto, la privacidad y los campos obligatorios. El compilador nunca adivina una identidad nominal por los nombres de campos.
En esta página
Cuando se espera un tipo struct exacto, .{ campos } construye ese struct sin repetir su nombre. Siguen aplicándose los valores por defecto, la privacidad y los campos obligatorios. El compilador nunca adivina una identidad nominal por los nombres de campos.
Ejemplo completo
Construcción contextual.
22-contextual-structs.zolo
// A known nominal context supplies the construction name.
struct Point { x: int = 0, y: int = 0 }
struct Segment { start: Point, end: Point }
fn origin() -> Point { .{} }
fn magnitude(point: Point) -> int { point.x + point.y }
fn main() {
let x = 3
let point: Point = .{ x, y: 4 }
print(magnitude(.{ x: 5 })) // expected: 5
print(point.y) // expected: 4
let line: Segment = .{ start: .{ x: 1 }, end: .{ x: 7, y: 2 } }
print(line.end.x) // expected: 7
let shifted: Point = .{ x: point.x + 10, ..point }
print(shifted.x) // expected: 13
}
Reglas y comportamiento
Records, maps y actualizaciones · Documentación
Desde un checkout del repositorio:
zolo examples/features/06-data-structures/22-contextual-structs.zolo
Consulta también