Criando Bibliotecas
Estenda o poder do MiniDart criando suas próprias bibliotecas com funções nativas implementadas em Dart.Arquitetura do Sistema de Bibliotecas
- StandardLibrary: Gerenciador central das bibliotecas
- NativeFunction: Representação de uma função nativa
- Sistema de Imports: Permite importar bibliotecas com ou sem alias
- VM Integration: Execução das funções nativas durante runtime
Fluxo de Funcionamento
Estrutura de uma Biblioteca
1. Registro da Biblioteca
Todas as bibliotecas são registradas no arquivolib/src/standard_library.dart através de métodos privados:
2. Convenção de Nomes
- Nome da biblioteca:
nomebiblioteca.funcao - Exemplo:
math.sqrt,string.tamanho,io.imprimir - Consistência: Use nomes em português para manter o padrão da linguagem
3. Classe NativeFunction
Processo de Criação de Nova Biblioteca
Passo 1: Definir o Escopo da Biblioteca
Determine:- Nome da biblioteca (ex:
data,arquivo,rede) - Funcionalidades que serão oferecidas
- Tipos de dados que serão manipulados
- Dependências externas necessárias
Passo 2: Implementar as Funções
2.1 Adicionar método de registro
No arquivostandard_library.dart, adicione um novo método:
2.2 Chamar o método no construtor
2.3 Implementar as funções
Passo 3: Implementar Funções Auxiliares
Adicione métodos de conversão específicos para sua biblioteca:Passo 4: Validação e Testes
Crie arquivos de teste para validar sua biblioteca:Exemplo Completo: Biblioteca de Arquivos
1. Definição da Biblioteca
2. Uso da Biblioteca
Boas Práticas
1. Tratamento de Erros
2. Validação de Parâmetros
3. Documentação
4. Convenções de Nome
- Biblioteca: substantivo em minúsculas (
math,string,arquivo) - Função: verbo ou substantivo descritivo (
calcular,tamanho,existe) - Parâmetros: nomes claros e em português quando possível
Tipos de Dados Suportados
Entrada (Parâmetros)
int- Números inteirosdouble- Números reaisString- Textobool- Valores lógicos (true/false)null- Valor nulo
Saída (Retorno)
- Mesmos tipos de entrada
void- Para funções que não retornam valor (usereturn null;)
Conversões Disponíveis
Sistema de Imports
Import Básico
Import com Alias
Validação de Bibliotecas
No arquivosemantic_analyzer.dart, adicione sua biblioteca à lista de bibliotecas válidas:
Debugging e Testes
1. Teste Individual de Funções
2. Verificação de Erros
3. Execução
Bibliotecas Existentes como Referência
1. Math Library (31 funções)
- Trigonometria:
sin,cos,tan,asin,acos,atan - Exponenciais:
exp,log,log10,pow,sqrt - Arredondamento:
abs,ceil,floor,round - Comparação:
max,min - Aleatórios:
random - Constantes:
PI,E,LN2, etc.
2. String Library (17 funções)
- Propriedades:
tamanho,vazio - Transformações:
maiuscula,minuscula,inverter,limpar - Verificações:
contem,comecaCom,terminaCom - Manipulação:
encontrar,substituir,fatiar,caractereEm - Operações:
repetir,concatenar,dividir
3. IO Library (5 funções)
- Saída:
imprimir,escrever,novaLinha - Entrada:
lerTexto,lerNumero(simulados)
Próximos Passos
Ideias para Novas Bibliotecas
data- Manipulação de datas e tempoarquivo- Operações com arquivos e diretóriosrede- Requisições HTTP básicasjson- Parsing e geração de JSONlista- Operações avançadas com arrayscrypto- Funções de hash e criptografia básica
Recursos Avançados Futuros
- Bibliotecas dinâmicas: Carregamento de bibliotecas externas
- Namespaces aninhados:
biblioteca.modulo.funcao - Tipos customizados: Estruturas de dados complexas
- Callbacks: Funções como parâmetros