Desestruturação de objetos

SkyL permite que você desestruture objetos em variáveis individuais de forma direta e elegante. Isso significa que você pode extrair os campos de um tipo customizado para variáveis locais com facilidade.

Vamos começar com um exemplo básico. Suponha que temos um tipo definido assim:

type Person {
    name: str,
    age: int
}

Agora vamos instanciar um Person e desestruturar seus campos:

def main() -> void {
    let p = Person("Skyer", 20);

    let { name, age } = p;

    println(name); // Saída: Skyer
    println(age);  // Saída: 20
}

Você também pode extrair apenas alguns dos campos, se quiser:

def main() -> void {
    let p = Person("Skyer", 20);

    let { name } = p;

    println(name); // Saída: Skyer
}

A ordem dos campos não importa. O exemplo abaixo também funciona:

def main() -> void {
    let p = Person("Skyer", 20);

    let { age, name } = p;

    println(name); // Saída: Skyer
    println(age);  // Saída: 20
}

A desestruturação também pode ser usada em combinação com outras expressões. Por exemplo, você pode extrair campos dentro de uma função:

def imprimir_nome(p: Person) -> void {
    let { name } = p;
    println("Nome:");
    println(name);
}

def main() -> void {
    let p = Person("Skyer", 20);
    imprimir_nome(p);
}

Essa funcionalidade facilita muito a leitura do código e evita chamadas repetidas como p.name ou p.age, deixando o código mais limpo e direto.

Observação

  • A desestruturação funciona apenas com tipos definidos pelo usuário (tipos type).
  • O nome das variáveis precisa corresponder exatamente aos nomes dos campos do tipo.
  • Não é necessário desestruturar todos os campos — você pode extrair apenas os que quiser.

Essa é uma das formas mais simples e poderosas de manipular dados em SkyL!