From d63779ec0a6f00854f53b48b0f6a67707879b6d1 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Thu, 12 Feb 2026 10:29:07 +0800 Subject: Updated docs. --- doc/docs/pt-br/doc/advanced/do.md | 22 ++- doc/docs/pt-br/doc/advanced/module.md | 253 -------------------------- doc/docs/pt-br/doc/control-flow/for-loop.md | 16 +- doc/docs/pt-br/doc/control-flow/while-loop.md | 42 ++++- doc/docs/pt-br/doc/language-basics/module.md | 253 ++++++++++++++++++++++++++ doc/docs/pt-br/doc/objects/with-statement.md | 44 +++++ 6 files changed, 374 insertions(+), 256 deletions(-) delete mode 100644 doc/docs/pt-br/doc/advanced/module.md create mode 100644 doc/docs/pt-br/doc/language-basics/module.md (limited to 'doc/docs/pt-br') diff --git a/doc/docs/pt-br/doc/advanced/do.md b/doc/docs/pt-br/doc/advanced/do.md index 503c551..aaf2c69 100644 --- a/doc/docs/pt-br/doc/advanced/do.md +++ b/doc/docs/pt-br/doc/advanced/do.md @@ -20,7 +20,27 @@ print var -- nil aqui -O **do** do YueScript também pode ser usado como expressão. Permitindo combinar múltiplas linhas em uma. O resultado da expressão do é a última instrução em seu corpo. +O **do** do YueScript também pode ser usado como expressão. Permitindo combinar múltiplas linhas em uma. O resultado da expressão do é a última instrução em seu corpo. Expressões `do` suportam usar `break` para interromper o fluxo de execução e retornar múltiplos valores antecipadamente. + +```yuescript +status, value = do + n = 12 + if n > 10 + break "large", n + break "small", n +``` + + + +```yue +status, value = do + n = 12 + if n > 10 + break "large", n + break "small", n +``` + + ```yuescript counter = do diff --git a/doc/docs/pt-br/doc/advanced/module.md b/doc/docs/pt-br/doc/advanced/module.md deleted file mode 100644 index ed13107..0000000 --- a/doc/docs/pt-br/doc/advanced/module.md +++ /dev/null @@ -1,253 +0,0 @@ -# Módulo - -## Import - -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. - -```yuescript --- 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}}} -``` - - - -```yue --- 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}}} -``` - - - -## Import Global - -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. - -```yuescript -do - import tostring - import table.concat - print concat ["a", tostring 1] -``` - - - -```yue -do - import tostring - import table.concat - print concat ["a", tostring 1] -``` - - - -### Importação automática de variável global - -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. - -```yuescript -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 -``` - - - -```yue -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 -``` - - - -## Export - -A instrução export oferece uma forma concisa de definir módulos. - -### Export nomeado - -Export nomeado definirá uma variável local e também adicionará um campo na tabela exportada. - -```yuescript -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" -``` - - - -```yue -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. - -```yuescript -export :loadstring, to_lua: tolua = yue -export {itemA: {:fieldA = 'default'}} = tb -``` - - - -```yue -export :loadstring, to_lua: tolua = yue -export {itemA: {:fieldA = 'default'}} = tb -``` - - - -Exportar itens nomeados do módulo sem criar variáveis locais. - -```yuescript -export.itemA = tb -export. = items -export["a-b-c"] = 123 -``` - - - -```yue -export.itemA = tb -export. = items -export["a-b-c"] = 123 -``` - - - -### Export sem nome - -Export sem nome adicionará o item alvo na parte array da tabela exportada. - -```yuescript -d, e, f = 3, 2, 1 -export d, e, f - -export if this - 123 -else - 456 - -export with tmp - j = 2000 -``` - - - -```yue -d, e, f = 3, 2, 1 -export d, e, f - -export if this - 123 -else - 456 - -export with tmp - j = 2000 -``` - - - -### Export padrão - -Usar a palavra-chave **default** na instrução export para substituir a tabela exportada por qualquer coisa. - -```yuescript -export default -> - print "hello" - 123 -``` - - - -```yue -export default -> - print "hello" - 123 -``` - - diff --git a/doc/docs/pt-br/doc/control-flow/for-loop.md b/doc/docs/pt-br/doc/control-flow/for-loop.md index 4c99e6d..de5f9c2 100644 --- a/doc/docs/pt-br/doc/control-flow/for-loop.md +++ b/doc/docs/pt-br/doc/control-flow/for-loop.md @@ -86,7 +86,7 @@ doubled_evens = for i = 1, 20 -Além disso, os loops for suportam break com valor de retorno, permitindo que o próprio loop seja usado como expressão que sai antecipadamente com um resultado significativo. +Além disso, os loops for suportam break com valores de retorno, permitindo que o próprio loop seja usado como expressão que sai antecipadamente com um resultado significativo. Expressões `for` suportam `break` com múltiplos valores. Por exemplo, para encontrar o primeiro número maior que 10: @@ -106,6 +106,20 @@ first_large = for n in *numbers Esta sintaxe de break-com-valor permite padrões concisos e expressivos de busca ou saída antecipada diretamente em expressões de loop. +```yuescript +key, score = for k, v in pairs data + break k, v * 10 if k == "target" +``` + + + +```yue +key, score = for k, v in pairs data + break k, v * 10 if k == "target" +``` + + + Você também pode filtrar valores combinando a expressão do loop for com a instrução continue. Loops for no final do corpo de uma função não são acumulados em uma tabela para valor de retorno (em vez disso, a função retornará nil). Uma instrução return explícita pode ser usada, ou o loop pode ser convertido em compreensão de lista. diff --git a/doc/docs/pt-br/doc/control-flow/while-loop.md b/doc/docs/pt-br/doc/control-flow/while-loop.md index 2deb5aa..38df05a 100644 --- a/doc/docs/pt-br/doc/control-flow/while-loop.md +++ b/doc/docs/pt-br/doc/control-flow/while-loop.md @@ -45,7 +45,25 @@ until running == false do my_function! -Como os loops for, o loop while também pode ser usado como expressão. Além disso, para uma função retornar o valor acumulado de um loop while, a instrução deve ser explicitamente retornada. +Como os loops for, o loop while também pode ser usado como expressão. Expressões `while` e `until` suportam `break` com múltiplos valores. + +```yuescript +value, doubled = while true + n = get_next! + break n, n * 2 if n > 10 +``` + + + +```yue +value, doubled = while true + n = get_next! + break n, n * 2 if n > 10 +``` + + + +Além disso, para uma função retornar o valor acumulado de um loop while, a instrução deve ser explicitamente retornada. ## Loop Repeat @@ -70,3 +88,25 @@ until i == 0 ``` + +Expressões `repeat` também suportam `break` com múltiplos valores: + +```yuescript +i = 1 +value, scaled = repeat + break i, i * 100 if i > 3 + i += 1 +until false +``` + + + +```yue +i = 1 +value, scaled = repeat + break i, i * 100 if i > 3 + i += 1 +until false +``` + + diff --git a/doc/docs/pt-br/doc/language-basics/module.md b/doc/docs/pt-br/doc/language-basics/module.md new file mode 100644 index 0000000..ed13107 --- /dev/null +++ b/doc/docs/pt-br/doc/language-basics/module.md @@ -0,0 +1,253 @@ +# Módulo + +## Import + +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. + +```yuescript +-- 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}}} +``` + + + +```yue +-- 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}}} +``` + + + +## Import Global + +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. + +```yuescript +do + import tostring + import table.concat + print concat ["a", tostring 1] +``` + + + +```yue +do + import tostring + import table.concat + print concat ["a", tostring 1] +``` + + + +### Importação automática de variável global + +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. + +```yuescript +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 +``` + + + +```yue +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 +``` + + + +## Export + +A instrução export oferece uma forma concisa de definir módulos. + +### Export nomeado + +Export nomeado definirá uma variável local e também adicionará um campo na tabela exportada. + +```yuescript +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" +``` + + + +```yue +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. + +```yuescript +export :loadstring, to_lua: tolua = yue +export {itemA: {:fieldA = 'default'}} = tb +``` + + + +```yue +export :loadstring, to_lua: tolua = yue +export {itemA: {:fieldA = 'default'}} = tb +``` + + + +Exportar itens nomeados do módulo sem criar variáveis locais. + +```yuescript +export.itemA = tb +export. = items +export["a-b-c"] = 123 +``` + + + +```yue +export.itemA = tb +export. = items +export["a-b-c"] = 123 +``` + + + +### Export sem nome + +Export sem nome adicionará o item alvo na parte array da tabela exportada. + +```yuescript +d, e, f = 3, 2, 1 +export d, e, f + +export if this + 123 +else + 456 + +export with tmp + j = 2000 +``` + + + +```yue +d, e, f = 3, 2, 1 +export d, e, f + +export if this + 123 +else + 456 + +export with tmp + j = 2000 +``` + + + +### Export padrão + +Usar a palavra-chave **default** na instrução export para substituir a tabela exportada por qualquer coisa. + +```yuescript +export default -> + print "hello" + 123 +``` + + + +```yue +export default -> + print "hello" + 123 +``` + + diff --git a/doc/docs/pt-br/doc/objects/with-statement.md b/doc/docs/pt-br/doc/objects/with-statement.md index e5a56e5..38efee7 100644 --- a/doc/docs/pt-br/doc/objects/with-statement.md +++ b/doc/docs/pt-br/doc/objects/with-statement.md @@ -44,6 +44,50 @@ file = with File "favorite_foods.txt" +Expressões `with` suportam `break` com um valor: + +```yuescript +result = with obj + break .value +``` + + + +```yue +result = with obj + break .value +``` + + + +Depois que `break value` é usado dentro de `with`, a expressão `with` deixa de retornar seu objeto-alvo e passa a retornar o valor de `break`. + +```yuescript +a = with obj + .x = 1 +-- a é obj + +b = with obj + break .x +-- b é .x, não obj +``` + + + +```yue +a = with obj + .x = 1 +-- a é obj + +b = with obj + break .x +-- b é .x, não obj +``` + + + +Diferente de `for` / `while` / `repeat` / `do`, `with` suporta apenas um valor de `break`. + Ou… ```yuescript -- cgit v1.2.3-55-g6feb