Pular para o conteúdo

Módulo

A instrução import é um açúcar sintático para requerer um módulo ou ajudar a extrair itens de um módulo importado. Os itens importados são const por padrão.

-- usado como desestruturação de tabela
do
import insert, concat from table
-- reporta erro ao atribuir a insert, concat
import C, Ct, Cmt from require "lpeg"
-- atalho para require implícito
import x, y, z from 'mymodule'
-- import com estilo Python
from 'module' import a, b, c
-- atalho para requerer um módulo
do
import 'module'
import 'module_x'
import "d-a-s-h-e-s"
import "module.part"
-- requerer módulo com aliasing ou desestruturação de tabela
do
import "player" as PlayerModule
import "lpeg" as :C, :Ct, :Cmt
import "export" as {one, two, Something:{umm:{ch}}}

Você pode importar globais específicos para variáveis locais com import. Ao importar uma cadeia de acessos a variáveis globais, o último campo será atribuído à variável local.

do
import tostring
import table.concat
print concat ["a", tostring 1]

Você pode colocar import global no topo de um bloco para importar automaticamente todos os nomes que não foram explicitamente declarados ou atribuídos no escopo atual como globais. Essas importações implícitas são tratadas como consts locais que referenciam os globais correspondentes na posição da instrução.

Nomes que foram explicitamente declarados como globais no mesmo escopo não serão importados, então você ainda pode atribuir a eles.

do
import global
print "hello"
math.random 3
-- print = nil -- erro: globais importados são const
do
-- variável global explícita não será importada
import global
global FLAG
print FLAG
FLAG = 123

A instrução export oferece uma forma concisa de definir módulos.

Export nomeado definirá uma variável local e também adicionará um campo na tabela exportada.

export a, b, c = 1, 2, 3
export cool = "cat"
export What = if this
"abc"
else
"def"
export y = ->
hallo = 3434
export class Something
umm: "cool"

Fazendo export nomeado com desestruturação.

export :loadstring, to_lua: tolua = yue
export {itemA: {:fieldA = 'default'}} = tb

Exportar itens nomeados do módulo sem criar variáveis locais.

export.itemA = tb
export.<index> = items
export["a-b-c"] = 123

Export sem nome adicionará o item alvo na parte array da tabela exportada.

d, e, f = 3, 2, 1
export d, e, f
export if this
123
else
456
export with tmp
j = 2000

Usar a palavra-chave default na instrução export para substituir a tabela exportada por qualquer coisa.

export default ->
print "hello"
123

YueScriptCompilador

Carregando compilador…