aboutsummaryrefslogtreecommitdiff
path: root/doc/docs/id-id
diff options
context:
space:
mode:
Diffstat (limited to 'doc/docs/id-id')
-rw-r--r--doc/docs/id-id/doc/control-flow/conditionals.md58
-rw-r--r--doc/docs/id-id/doc/control-flow/goto.md106
2 files changed, 164 insertions, 0 deletions
diff --git a/doc/docs/id-id/doc/control-flow/conditionals.md b/doc/docs/id-id/doc/control-flow/conditionals.md
index 861eae6..db67a79 100644
--- a/doc/docs/id-id/doc/control-flow/conditionals.md
+++ b/doc/docs/id-id/doc/control-flow/conditionals.md
@@ -143,3 +143,61 @@ if a in list
143``` 143```
144 144
145</YueDisplay> 145</YueDisplay>
146
147Operator `in` juga dapat digunakan dengan tabel dan mendukung varian `not in` untuk negasi:
148
149```yuescript
150has = "foo" in {"bar", "foo"}
151
152if a in {1, 2, 3}
153 print "a ada di dalam tabel"
154
155not_exist = item not in list
156
157check = -> value not in table
158```
159
160<YueDisplay>
161
162```yue
163has = "foo" in {"bar", "foo"}
164
165if a in {1, 2, 3}
166 print "a ada di dalam tabel"
167
168not_exist = item not in list
169
170check = -> value not in table
171```
172
173</YueDisplay>
174
175Daftar atau tabel dengan satu elemen memeriksa kesamaan dengan elemen tersebut:
176
177```yuescript
178-- [1,] memeriksa apakah nilai == 1
179c = a in [1,]
180
181-- {1} juga memeriksa apakah nilai == 1
182c = a in {1}
183
184-- Tanpa koma, [1] adalah akses indeks (tb[1])
185with tb
186 c = a in [1]
187```
188
189<YueDisplay>
190
191```yue
192-- [1,] memeriksa apakah nilai == 1
193c = a in [1,]
194
195-- {1} juga memeriksa apakah nilai == 1
196c = a in {1}
197
198-- Tanpa koma, [1] adalah akses indeks (tb[1])
199with tb
200 c = a in [1]
201```
202
203</YueDisplay>
diff --git a/doc/docs/id-id/doc/control-flow/goto.md b/doc/docs/id-id/doc/control-flow/goto.md
new file mode 100644
index 0000000..f387f0d
--- /dev/null
+++ b/doc/docs/id-id/doc/control-flow/goto.md
@@ -0,0 +1,106 @@
1# Goto
2
3YueScript mendukung pernyataan goto dan sintaks label untuk mengontrol alur program, mengikuti aturan yang sama dengan pernyataan goto Lua. **Catatan:** Pernyataan goto memerlukan Lua 5.2 atau lebih tinggi. Saat mengompilasi ke Lua 5.1, penggunaan sintaks goto akan menyebabkan galat kompilasi.
4
5Label didefinisikan menggunakan dua titik dua:
6
7```yuescript
8::mulai::
9::selesai::
10::label_saya::
11```
12
13<YueDisplay>
14
15```yue
16::mulai::
17::selesai::
18::label_saya::
19```
20
21</YueDisplay>
22
23Pernyataan goto melompat ke label yang ditentukan:
24
25```yuescript
26a = 0
27::mulai::
28a += 1
29goto selesai if a == 5
30goto mulai
31::selesai::
32print "a sekarang 5"
33```
34
35<YueDisplay>
36
37```yue
38a = 0
39::mulai::
40a += 1
41goto selesai if a == 5
42goto mulai
43::selesai::
44print "a sekarang 5"
45```
46
47</YueDisplay>
48
49Pernyataan goto berguna untuk keluar dari loop yang bersarang dalam:
50
51```yuescript
52for z = 1, 10
53 for y = 1, 10 do for x = 1, 10
54 if x^2 + y^2 == z^2
55 print 'tripel Pythagorean ditemukan:', x, y, z
56 goto ok
57::ok::
58```
59
60<YueDisplay>
61
62```yue
63for z = 1, 10
64 for y = 1, 10 do for x = 1, 10
65 if x^2 + y^2 == z^2
66 print 'tripel Pythagorean ditemukan:', x, y, z
67 goto ok
68::ok::
69```
70
71</YueDisplay>
72
73Anda juga dapat menggunakan label untuk melompat ke tingkat loop tertentu:
74
75```yuescript
76for z = 1, 10
77 for y = 1, 10
78 for x = 1, 10
79 if x^2 + y^2 == z^2
80 print 'tripel Pythagorean ditemukan:', x, y, z
81 print 'mencoba z berikutnya...'
82 goto zcontinue
83 ::zcontinue::
84```
85
86<YueDisplay>
87
88```yue
89for z = 1, 10
90 for y = 1, 10
91 for x = 1, 10
92 if x^2 + y^2 == z^2
93 print 'tripel Pythagorean ditemukan:', x, y, z
94 print 'mencoba z berikutnya...'
95 goto zcontinue
96 ::zcontinue::
97```
98
99</YueDisplay>
100
101## Catatan
102
103- Label harus unik dalam cakupannya
104- goto dapat melompat ke label pada tingkat cakupan yang sama atau luar
105- goto tidak dapat melompat ke cakupan dalam (seperti di dalam blok atau loop)
106- Gunakan goto dengan hemat, karena dapat membuat kode lebih sulit dibaca dan dipelihara