// DOCS NAVIGATION
Records_
SOURCE: content/docs/reference/03-tipos-compostos.md — 03 Tipos Compostos / 4. Records
Declaração / Declaration
PT-BR:
Records são tipos de dados com campos nomeados e tipados. São declarados no nível superior do módulo.
EN-US:
Records are data types with named, typed fields. They are declared at the module top-level.
module structs
// Record simples / Simple record
record Ponto {
x: int,
y: int
}
// Record com vários tipos / Record with multiple types
record Pessoa {
nome: string,
idade: int,
altura: float,
ativo: bool
}
// Record aninhado / Nested record
record Retangulo {
canto_superior_esquerdo: Ponto,
largura: int,
altura: int
}
Instanciação / Instantiation
public func main() {
// Instanciação de record / Record instantiation
let p = Ponto { x: 10, y: 20 }
let x = 5
let y = 8
let p2 = Ponto { x, y }
// shorthand: x == x: x, y == y: y
let pessoa = Pessoa {
nome: "Alice",
idade: 30,
altura: 1.65,
ativo: true
}
// Record aninhado / Nested record
let rect = Retangulo {
canto_superior_esquerdo: Ponto { x: 0, y: 0 },
largura: 100,
altura: 50
}
}
Acesso a Campos / Field Access
let p = Ponto { x: 10, y: 20 }
let coord_x = p.x
// 10
let coord_y = p.y
// 20
// Acesso aninhado / Nested access
let rect = Retangulo {
canto_superior_esquerdo: Ponto { x: 5, y: 10 },
largura: 200,
altura: 100
}
let x_do_canto = rect.canto_superior_esquerdo.x
// 5
let area = rect.largura * rect.altura
// 20000
Structs Genéricas / Generic Structs
PT-BR:
Structs podem ter parâmetros de tipo genéricos, tornando-as reutilizáveis para diferentes tipos de dados.
EN-US:
Structs can have generic type parameters, making them reusable for different data types.
record Par<T> {
primeiro: T,
segundo: T
}
record Mapa<K, V> {
chave: K,
valor: V
}
public func main() {
let par_int = Par { primeiro: 1, segundo: 2 }
let par_str = Par { primeiro: "a", segundo: "b" }
let mapa = Mapa { chave: "nome", valor: "Alice" }
}