Pular para o conteúdo

09 · Estruturas de Dados

Construção contextual

Quando um tipo struct exato é esperado, .{ campos } constrói esse struct sem repetir seu nome. Defaults, privacidade e campos obrigatórios continuam valendo. O compilador nunca adivinha uma identidade nominal pelos nomes dos campos.

Nesta página

Quando um tipo struct exato é esperado, .{ campos } constrói esse struct sem repetir seu nome. Defaults, privacidade e campos obrigatórios continuam valendo. O compilador nunca adivinha uma identidade nominal pelos nomes dos campos.

Exemplo completo

Construção contextual.

22-contextual-structs.zolo
Playground
// 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

}

Regras e comportamento

Records, maps e atualizações · Documentação

A partir de um checkout do repositório:

zolo examples/features/06-data-structures/22-contextual-structs.zolo

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br