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/id-id/doc/advanced/do.md | 22 ++- doc/docs/id-id/doc/advanced/module.md | 253 -------------------------- doc/docs/id-id/doc/control-flow/for-loop.md | 16 +- doc/docs/id-id/doc/control-flow/while-loop.md | 42 ++++- doc/docs/id-id/doc/language-basics/module.md | 253 ++++++++++++++++++++++++++ doc/docs/id-id/doc/objects/with-statement.md | 44 +++++ 6 files changed, 374 insertions(+), 256 deletions(-) delete mode 100644 doc/docs/id-id/doc/advanced/module.md create mode 100644 doc/docs/id-id/doc/language-basics/module.md (limited to 'doc/docs/id-id') diff --git a/doc/docs/id-id/doc/advanced/do.md b/doc/docs/id-id/doc/advanced/do.md index ac75531..52ef5dc 100644 --- a/doc/docs/id-id/doc/advanced/do.md +++ b/doc/docs/id-id/doc/advanced/do.md @@ -20,7 +20,27 @@ print var -- nil di sini -`do` di YueScript juga bisa digunakan sebagai ekspresi, memungkinkan Anda menggabungkan beberapa baris menjadi satu. Hasil ekspresi `do` adalah pernyataan terakhir di badannya. +`do` di YueScript juga bisa digunakan sebagai ekspresi, memungkinkan Anda menggabungkan beberapa baris menjadi satu. Hasil ekspresi `do` adalah pernyataan terakhir di badannya. Ekspresi `do` mendukung penggunaan `break` untuk memutus alur eksekusi dan mengembalikan banyak nilai lebih awal. + +```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/id-id/doc/advanced/module.md b/doc/docs/id-id/doc/advanced/module.md deleted file mode 100644 index 103e3f6..0000000 --- a/doc/docs/id-id/doc/advanced/module.md +++ /dev/null @@ -1,253 +0,0 @@ -# Modul - -## Import - -Pernyataan `import` adalah sintaks sugar untuk me-require modul atau membantu mengekstrak item dari modul yang diimpor. Item yang diimpor bersifat `const` secara default. - -```yuescript --- digunakan sebagai destrukturisasi tabel -do - import insert, concat from table - -- akan error saat meng-assign ke insert, concat - import C, Ct, Cmt from require "lpeg" - -- shortcut untuk require implisit - import x, y, z from 'mymodule' - -- import gaya Python - from 'module' import a, b, c - --- shortcut untuk require modul -do - import 'module' - import 'module_x' - import "d-a-s-h-e-s" - import "module.part" - --- require modul dengan aliasing atau destrukturisasi tabel -do - import "player" as PlayerModule - import "lpeg" as :C, :Ct, :Cmt - import "export" as {one, two, Something:{umm:{ch}}} -``` - - - -```yue --- digunakan sebagai destrukturisasi tabel -do - import insert, concat from table - -- akan error saat meng-assign ke insert, concat - import C, Ct, Cmt from require "lpeg" - -- shortcut untuk require implisit - import x, y, z from 'mymodule' - -- import gaya Python - from 'module' import a, b, c - --- shortcut untuk require modul -do - import 'module' - import 'module_x' - import "d-a-s-h-e-s" - import "module.part" - --- require modul dengan aliasing atau destrukturisasi tabel -do - import "player" as PlayerModule - import "lpeg" as :C, :Ct, :Cmt - import "export" as {one, two, Something:{umm:{ch}}} -``` - - - -## Import Global - -Anda dapat mengimpor global tertentu ke variabel local dengan `import`. Saat mengimpor rangkaian akses variabel global, field terakhir akan di-assign ke variabel 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] -``` - - - -### Import Variabel Global Otomatis - -Anda dapat menempatkan `import global` di awal blok untuk mengimpor secara otomatis semua nama yang belum dideklarasikan atau di-assign secara eksplisit di scope saat ini sebagai global. Import implisit ini diperlakukan sebagai local const yang mereferensikan global terkait pada posisi pernyataan tersebut. - -Nama yang secara eksplisit dideklarasikan sebagai global di scope yang sama tidak akan diimpor, sehingga Anda masih bisa meng-assign ke mereka. - -```yuescript -do - import global - print "hello" - math.random 3 - -- print = nil -- error: imported globals are const - -do - -- variabel global eksplisit tidak akan diimpor - import global - global FLAG - print FLAG - FLAG = 123 -``` - - - -```yue -do - import global - print "hello" - math.random 3 - -- print = nil -- error: imported globals are const - -do - -- variabel global eksplisit tidak akan diimpor - import global - global FLAG - print FLAG - FLAG = 123 -``` - - - -## Export - -Pernyataan `export` menawarkan cara ringkas untuk mendefinisikan modul. - -### Export Bernama - -Export bernama akan mendefinisikan variabel local sekaligus menambahkan field di tabel export. - -```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" -``` - - - -Melakukan export bernama dengan destrukturisasi. - -```yuescript -export :loadstring, to_lua: tolua = yue -export {itemA: {:fieldA = 'default'}} = tb -``` - - - -```yue -export :loadstring, to_lua: tolua = yue -export {itemA: {:fieldA = 'default'}} = tb -``` - - - -Export item bernama dari modul tanpa membuat variabel local. - -```yuescript -export.itemA = tb -export. = items -export["a-b-c"] = 123 -``` - - - -```yue -export.itemA = tb -export. = items -export["a-b-c"] = 123 -``` - - - -### Export Tanpa Nama - -Export tanpa nama akan menambahkan item target ke bagian array dari tabel export. - -```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 Default - -Gunakan kata kunci **default** dalam pernyataan export untuk mengganti tabel export dengan apa pun. - -```yuescript -export default -> - print "hello" - 123 -``` - - - -```yue -export default -> - print "hello" - 123 -``` - - diff --git a/doc/docs/id-id/doc/control-flow/for-loop.md b/doc/docs/id-id/doc/control-flow/for-loop.md index 65386f7..3835cce 100644 --- a/doc/docs/id-id/doc/control-flow/for-loop.md +++ b/doc/docs/id-id/doc/control-flow/for-loop.md @@ -86,7 +86,7 @@ doubled_evens = for i = 1, 20 -Selain itu, loop for mendukung break dengan nilai kembalian, sehingga loop itu sendiri bisa dipakai sebagai ekspresi yang keluar lebih awal dengan hasil bermakna. +Selain itu, loop for mendukung break dengan nilai kembalian, sehingga loop itu sendiri bisa dipakai sebagai ekspresi yang keluar lebih awal dengan hasil bermakna. Ekspresi `for` mendukung `break` dengan banyak nilai. Contohnya, untuk menemukan angka pertama yang lebih besar dari 10: @@ -106,6 +106,20 @@ first_large = for n in *numbers Sintaks break-dengan-nilai ini memungkinkan pola pencarian atau keluar-lebih-awal yang ringkas langsung di dalam ekspresi 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" +``` + + + Anda juga bisa memfilter nilai dengan menggabungkan ekspresi for dengan pernyataan continue. Loop for di akhir badan fungsi tidak diakumulasikan menjadi tabel untuk nilai kembalian (sebaliknya fungsi akan mengembalikan nil). Gunakan pernyataan return eksplisit, atau ubah loop menjadi list comprehension. diff --git a/doc/docs/id-id/doc/control-flow/while-loop.md b/doc/docs/id-id/doc/control-flow/while-loop.md index 3e302cc..0c3a28d 100644 --- a/doc/docs/id-id/doc/control-flow/while-loop.md +++ b/doc/docs/id-id/doc/control-flow/while-loop.md @@ -45,7 +45,25 @@ until running == false do my_function! -Seperti loop for, loop while juga bisa digunakan sebagai ekspresi. Selain itu, agar sebuah fungsi mengembalikan nilai akumulasi dari loop while, pernyataannya harus di-return secara eksplisit. +Seperti loop for, loop while juga bisa digunakan sebagai ekspresi. Ekspresi `while` dan `until` mendukung `break` dengan banyak nilai. + +```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 +``` + + + +Selain itu, agar sebuah fungsi mengembalikan nilai akumulasi dari loop while, pernyataannya harus di-return secara eksplisit. ## Repeat Loop @@ -70,3 +88,25 @@ until i == 0 ``` + +Ekspresi `repeat` juga mendukung `break` dengan banyak nilai: + +```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/id-id/doc/language-basics/module.md b/doc/docs/id-id/doc/language-basics/module.md new file mode 100644 index 0000000..103e3f6 --- /dev/null +++ b/doc/docs/id-id/doc/language-basics/module.md @@ -0,0 +1,253 @@ +# Modul + +## Import + +Pernyataan `import` adalah sintaks sugar untuk me-require modul atau membantu mengekstrak item dari modul yang diimpor. Item yang diimpor bersifat `const` secara default. + +```yuescript +-- digunakan sebagai destrukturisasi tabel +do + import insert, concat from table + -- akan error saat meng-assign ke insert, concat + import C, Ct, Cmt from require "lpeg" + -- shortcut untuk require implisit + import x, y, z from 'mymodule' + -- import gaya Python + from 'module' import a, b, c + +-- shortcut untuk require modul +do + import 'module' + import 'module_x' + import "d-a-s-h-e-s" + import "module.part" + +-- require modul dengan aliasing atau destrukturisasi tabel +do + import "player" as PlayerModule + import "lpeg" as :C, :Ct, :Cmt + import "export" as {one, two, Something:{umm:{ch}}} +``` + + + +```yue +-- digunakan sebagai destrukturisasi tabel +do + import insert, concat from table + -- akan error saat meng-assign ke insert, concat + import C, Ct, Cmt from require "lpeg" + -- shortcut untuk require implisit + import x, y, z from 'mymodule' + -- import gaya Python + from 'module' import a, b, c + +-- shortcut untuk require modul +do + import 'module' + import 'module_x' + import "d-a-s-h-e-s" + import "module.part" + +-- require modul dengan aliasing atau destrukturisasi tabel +do + import "player" as PlayerModule + import "lpeg" as :C, :Ct, :Cmt + import "export" as {one, two, Something:{umm:{ch}}} +``` + + + +## Import Global + +Anda dapat mengimpor global tertentu ke variabel local dengan `import`. Saat mengimpor rangkaian akses variabel global, field terakhir akan di-assign ke variabel 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] +``` + + + +### Import Variabel Global Otomatis + +Anda dapat menempatkan `import global` di awal blok untuk mengimpor secara otomatis semua nama yang belum dideklarasikan atau di-assign secara eksplisit di scope saat ini sebagai global. Import implisit ini diperlakukan sebagai local const yang mereferensikan global terkait pada posisi pernyataan tersebut. + +Nama yang secara eksplisit dideklarasikan sebagai global di scope yang sama tidak akan diimpor, sehingga Anda masih bisa meng-assign ke mereka. + +```yuescript +do + import global + print "hello" + math.random 3 + -- print = nil -- error: imported globals are const + +do + -- variabel global eksplisit tidak akan diimpor + import global + global FLAG + print FLAG + FLAG = 123 +``` + + + +```yue +do + import global + print "hello" + math.random 3 + -- print = nil -- error: imported globals are const + +do + -- variabel global eksplisit tidak akan diimpor + import global + global FLAG + print FLAG + FLAG = 123 +``` + + + +## Export + +Pernyataan `export` menawarkan cara ringkas untuk mendefinisikan modul. + +### Export Bernama + +Export bernama akan mendefinisikan variabel local sekaligus menambahkan field di tabel export. + +```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" +``` + + + +Melakukan export bernama dengan destrukturisasi. + +```yuescript +export :loadstring, to_lua: tolua = yue +export {itemA: {:fieldA = 'default'}} = tb +``` + + + +```yue +export :loadstring, to_lua: tolua = yue +export {itemA: {:fieldA = 'default'}} = tb +``` + + + +Export item bernama dari modul tanpa membuat variabel local. + +```yuescript +export.itemA = tb +export. = items +export["a-b-c"] = 123 +``` + + + +```yue +export.itemA = tb +export. = items +export["a-b-c"] = 123 +``` + + + +### Export Tanpa Nama + +Export tanpa nama akan menambahkan item target ke bagian array dari tabel export. + +```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 Default + +Gunakan kata kunci **default** dalam pernyataan export untuk mengganti tabel export dengan apa pun. + +```yuescript +export default -> + print "hello" + 123 +``` + + + +```yue +export default -> + print "hello" + 123 +``` + + diff --git a/doc/docs/id-id/doc/objects/with-statement.md b/doc/docs/id-id/doc/objects/with-statement.md index 96a3efd..b3dd520 100644 --- a/doc/docs/id-id/doc/objects/with-statement.md +++ b/doc/docs/id-id/doc/objects/with-statement.md @@ -44,6 +44,50 @@ file = with File "favorite_foods.txt" +Ekspresi `with` mendukung `break` dengan satu nilai: + +```yuescript +result = with obj + break .value +``` + + + +```yue +result = with obj + break .value +``` + + + +Setelah `break value` digunakan di dalam `with`, ekspresi `with` tidak lagi mengembalikan objek targetnya, melainkan mengembalikan nilai dari `break`. + +```yuescript +a = with obj + .x = 1 +-- a adalah obj + +b = with obj + break .x +-- b adalah .x, bukan obj +``` + + + +```yue +a = with obj + .x = 1 +-- a adalah obj + +b = with obj + break .x +-- b adalah .x, bukan obj +``` + + + +Berbeda dari `for` / `while` / `repeat` / `do`, `with` hanya mendukung satu nilai `break`. + Atau… ```yuescript -- cgit v1.2.3-55-g6feb