Módulos e Importação
À medida que seus programas SkyL ficam maiores, organizar o código em vários arquivos ajuda muito a manter tudo limpo, fácil de entender e de manter. Para isso, SkyL permite que você divida seu código em módulos — arquivos separados que podem ser usados juntos.
Criando um módulo simples
Vamos criar um módulo chamado person.gpp
na raiz do seu projeto. Esse arquivo terá uma função que verifica se alguém é adulto:
def eh_adulto(idade: int) -> bool {
if idade >= 18 {
println("Você é adulto.");
return true;
} else {
println("Você não é adulto.");
return false;
}
}
Agora, em outro arquivo chamado main.gpp
, vamos usar essa função. Para isso, usamos a palavra-chave import:
import person;
def main() -> void {
let idade = 18;
let resultado = eh_adulto(idade);
println("Resultado da função:");
println(resultado);
}
Quando você executa main.gpp
, SkyL automaticamente traz todo o conteúdo do arquivo person.gpp
para dentro do main.gpp
. Isso funciona de forma parecida com linguagens como C: o import literalmente "inclui" o código do módulo importado, deixando todas as suas funções e variáveis disponíveis.
Importando módulos em subdiretórios
Quer organizar seus arquivos em pastas? Sem problemas!
Suponha que você tenha criado uma pasta chamada util
e colocou person.gpp
dentro dela. Para importar, basta usar o caminho com pontos:
import util.person;
def main() -> void {
let idade = 20;
let resultado = eh_adulto(idade);
println("Resultado da função:");
println(resultado);
}
SkyL entende que o caminho util.person
corresponde ao arquivo util/person.gpp
.
Algumas dicas importantes sobre importação
- Quando você importa um módulo, tudo que estiver naquele arquivo fica disponível no arquivo atual, como se você tivesse copiado e colado.
- Não é necessário (e nem permitido) importar módulos dentro de funções — sempre importe no começo do arquivo.
- Se dois módulos importados tiverem funções ou variáveis com o mesmo nome, isso pode causar conflitos. Por enquanto, evite nomes duplicados.
- Importar um módulo mais de uma vez no mesmo arquivo não causa erro, mas também não traz benefícios extras: o código será incluído só uma vez.
Exemplo completo
Imagine que além do person.gpp
, você tenha um módulo math_utils.gpp
com funções para cálculos simples:
// math_utils.gpp
def soma(a: int, b: int) -> int {
return a + b;
}
def multiplica(a: int, b: int) -> int {
return a * b;
}
No seu main.gpp
, você pode importar os dois módulos e usar todas as funções:
import person;
import math_utils;
def main() -> void {
let idade = 21;
let resultado = eh_adulto(idade);
println("Adulto?");
println(resultado);
let x = 10;
let y = 5;
println("Soma:");
println(soma(x, y));
println("Multiplicação:");
println(multiplica(x, y));
}
Recapitulando
- Use
import nome_do_modulo;
para trazer o código de outro arquivo para o seu. - Módulos são arquivos
.gpp
que organizam seu código. - Você pode criar pastas para organizar seus módulos e importar usando caminhos com pontos.
- Tudo importado fica disponível para uso no arquivo atual, facilitando a modularização do seu projeto.
Com a modularização, seu código fica mais organizado, fácil de manter e preparado para projetos cada vez maiores e mais complexos!
Pronto para explorar ainda mais? No próximo capítulo, vamos falar sobre variáveis globais, constantes e como organizar seus dados em SkyL!