Tipos customizados
Em SkyL, você pode criar seus próprios tipos para representar coisas do mundo real de forma organizada e clara. Esses tipos são chamados de tipos customizados e funcionam como estruturas que agrupam vários dados relacionados.
Declarando um tipo customizado
Para criar um tipo customizado, use a palavra-chave type
seguida do nome do tipo e as suas propriedades entre chaves. Por exemplo, um tipo Person
com nome e idade:
#![allow(unused)] fn main() { type Person { name: str, age: int } }
Aqui, Person
tem dois campos: name
que é uma string, e age
que é um número inteiro.
Criando instâncias
Para criar um valor desse tipo, você usa o nome do tipo como se fosse uma função, passando os valores dos campos na ordem correta:
let p = Person("Skyer", 20);
Agora p
é uma pessoa com nome "Skyer" e idade 20.
Acessando os campos
Você pode acessar os dados dentro do seu tipo usando o ponto (.
), assim como em outras linguagens:
println(p.name); // Saída: Skyer
println(p.age); // Saída: 20
println(p); // Saída: [Skyer, 20]
Imprimir o objeto inteiro mostra os valores entre colchetes.
Usando tipos customizados como parâmetros
Se você quiser passar esses tipos para funções, basta declarar o parâmetro com o tipo customizado esperado:
def is_adult(p: Person) -> bool {
return p.age >= 18;
}
def main() -> void {
let p = Person("Skyer", 20);
if is_adult(p) {
print(p.name);
println(" é adulto.");
} else {
print(p.name);
println(" não é adulto.");
}
}
Funções internas (métodos) em tipos customizados
Você também pode definir funções que "pertencem" a um tipo customizado, chamadas de funções internas ou métodos. Para isso, use a palavra-chave internal
e receba o objeto atual como self
:
internal def is_adult(self: Person) -> bool {
return self.age >= 18;
}
def main() -> void {
let p = Person("Skyer", 20);
if p.is_adult() {
print(p.name);
println(" é adulto.");
} else {
print(p.name);
println(" não é adulto.");
}
}
Recapitulando
- Tipos customizados organizam dados relacionados em uma única estrutura.
- Você cria instâncias usando o nome do tipo como função.
- Campos são acessados com
obj.campo
. - Tipos customizados podem ser usados em parâmetros de funções.
- Funções internas (
internal
) podem ser associadas a tipos para adicionar comportamento.
Com tipos customizados, você ganha mais controle e clareza para modelar o que seu programa precisa!
Vamos em frente e explorar ainda mais funcionalidades de SkyL!