// DOCS NAVIGATION
Sistema de Módulos_
SOURCE: content/docs/reference/04-avancado.md — 04 Avançado / 6. Sistema de Módulos / Module System
Declaração de Módulo / Module Declaration
PT-BR:
Todo arquivo SpectraLang começa com uma declaração module. O caminho do módulo usa pontos como separadores.
EN-US:
Every SpectraLang file starts with a module declaration. The module path uses dots as separators.
module app
module app.utils
module app.controladores.usuarios
module biblioteca.colecoes
Importações / Imports
PT-BR:
Existem quatro formas úteis de importação no estado atual da linguagem:
EN-US:
There are four practical import forms in the language today:
1. Importação Qualificada / Qualified Import
// Importar o módulo completo e usar com prefixo / Import whole module and use with prefix
import std.io
import std.math as math
public func main() {
std.io.println("Olá")
// prefixo completo / full prefix
let raiz = math.sqrt_f(16.0)
// prefixo de alias / alias prefix
}
2. Importação por Nome / Named Import
// Importar nomes específicos diretamente / Import specific names directly
from std.io import println, print
from std.math import abs, sqrt_f as sqrt
public func main() {
println("Sem prefixo!")
// sem qualificação / no qualification
let r = sqrt(25.0)
// usando alias local / using local alias
}
3. Re-exportação Pública / Public Re-export
// Tornar uma importação pública (re-exportar) / Make an import public (re-export)
public from std.io import println
// Outros módulos podem importar println deste módulo / Other modules can import println from this module
4. Importação de Módulo para Uso Não Qualificado / Whole-Module Import for Unqualified Use
import std.io
public func main() returns int {
println("Olá sem prefixo")
std.io.println("Olá com prefixo")
return 0
}
OR-patterns
Use | para compartilhar o mesmo corpo entre padrões equivalentes:
enum Token {
Plus,
Minus,
Number(int),
}
func peso(token: Token) returns int {
return match token {
when Token::Number(value) then value,
when Token::Plus | Token::Minus then 1
}
}
O checker de exaustividade conta cada alternativa do OR-pattern separadamente.
Restrições do Sistema de Módulos / Module System Restrictions
PT-BR:
Na versão alpha, as seguintes limitações se aplicam:
- A compilação multi-arquivo depende do conjunto de arquivos/projeto passado ao CLI
- Não há detecção de módulos duplicados dentro da mesma sessão de compilação
- Módulos stdlib (
std.*) são resolvidos internamente pelo compilador
EN-US:
In the alpha version, the following limitations apply:
- Multi-file compilation depends on the file set or project passed to the CLI
- There is no duplicate module detection within the same compilation session
- Stdlib modules (
std.*) are resolved internally by the compiler
Módulos Stdlib Disponíveis / Available Stdlib Modules
| Módulo / Module | Conteúdo PT-BR | Content EN-US |
|---|---|---|
std.io | Entrada e saída | Input/Output |
std.string | Manipulação de strings | String manipulation |
std.math | Funções matemáticas | Mathematical functions |
std.convert | Conversão de tipos | Type conversion |
std.collections | Listas e coleções | Lists and collections |
std.random | Números aleatórios | Random numbers |
std.fs | Sistema de arquivos | File system |
std.env | Variáveis de ambiente | Environment variables |
std.option | Operações em Option | Option operations |
std.result | Operações em Result | Result operations |
std.char | Operações em caracteres | Character operations |
std.time | Operações de tempo | Time operations |