SPECTRALANG_

// DOCS NAVIGATION

Sistema de Módulos_

SOURCE: content/docs/reference/04-avancado.md04 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 / ModuleConteúdo PT-BRContent EN-US
std.ioEntrada e saídaInput/Output
std.stringManipulação de stringsString manipulation
std.mathFunções matemáticasMathematical functions
std.convertConversão de tiposType conversion
std.collectionsListas e coleçõesLists and collections
std.randomNúmeros aleatóriosRandom numbers
std.fsSistema de arquivosFile system
std.envVariáveis de ambienteEnvironment variables
std.optionOperações em OptionOption operations
std.resultOperações em ResultResult operations
std.charOperações em caracteresCharacter operations
std.timeOperações de tempoTime operations