Slide 12 de 37
Tipos declarados
Um struct
type User {
id: Int
name: Str
}
proc main(): void {
u := User(1, "ada")
echo u.name
}
Uma união com tag
type Shape {
Circle { radius: Int }
Rectangle { width: Int, height: Int }
Point
}
proc main(): void {
p := Shape.Circle(5)
echo p
}
Um type sem variantes é um struct; com variantes, uma união com tag. Um campo declarado fora de qualquer variante é adicionado a todas as variantes. Um valor é construído chamando o type ou a variante: User(1, "ada"), Shape.Circle(5). Não existe subtipagem nem interface — uma variante é uma forma de construir e combinar uma união, não um tipo próprio.