Pular para o conteúdo

As formas de adopt

Seis formas, e o que cada uma muda — inclusive a que traz qualquer biblioteca do Python.

adopt é uma palavra e seis formas. A escolha entre elas não é estilo: ela decide o que o leitor do arquivo consegue saber sem sair dele.

dataforge
// 1. O modulo inteiro, com o nome dele.
adopt Arcane.Math

// 2. Com apelido  o mais comum, e o que encurta sem esconder.
adopt Arcane.Math as M

// 3. So o que se usa.
adopt Arcane.Math.{sqrt, floor}

// 4. So o que se usa, renomeando.
adopt {sqrt as raiz} from Arcane.Math

out M.PI
out sqrt(16.0)
out raiz(25.0)
assert floor(3.7) is 3
FormaQuandoO que ela custa
adopt Xuso raro, nome curtoo nome inteiro em cada chamada
adopt X as Mo padrãonada; o apelido diz de onde veio
adopt X.{a, b}duas ou três funções muito usadasquem lê sqrt(x) não sabe de onde ele vem
adopt {a as b} from Xquando o nome colideidem, mais o nome trocado
adopt ./vizinhoarquivo do próprio projetoo caminho é relativo a este arquivo
adopt Python.numpybiblioteca do Pythona dependência deixa de ser zero

Caminhos relativos#

dataforge
// 'adopt ./x' procura ao lado DESTE arquivo — e nao da pasta em
// que o programa foi executado. A diferenca aparece quando o mesmo
// modulo e importado de duas profundidades.
//
//   projeto/
//     src/
//       main.df          adopt ./modelos
//       modelos.df
//       admin/
//         painel.df      adopt ../modelos
//
// E o hifen funciona: 'adopt ./minha-lib as L'. O lexer entrega o
// hifen como MINUS, e o caminho so o cola ao nome quando as colunas
// sao ADJACENTES — sem essa guarda, 'a - b' viraria um arquivo
// chamado 'a-b'.

out "o caminho e relativo ao arquivo, e nao ao diretorio de trabalho"

A ponte para o Python#

Python é espaço de nomes reservado, resolvido antes da biblioteca e dos arquivos vizinhos — um Python.df no disco não sequestra o import.

dataforge
// adopt Python.numpy as np
//
// A ponte NAO CONVERTE: um 'ndarray' continua um 'ndarray', e
// 'a * 2' e a conta vetorizada do numpy, e nao um laco sobre um
// milhao de posicoes. Isso so funciona porque o interpretador trata
// objeto estranho por PROTOCOLO — membro, metodo, indice, 'len',
// iteracao, aritmetica, texto e verdade.

out "a ponte existe, e a dependencia passa a ser sua"

Continue em Resolução e A ponte.