Struktur Kontrol

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Struktur kontrol adalah pernyataan yang mengelola aliran eksekusi kode Luau. Ada empat jenis struktur kontrol utama:

  • Sebuah jika kondisi lain pernyataan mengeksekusan kode hanya jika kondisi spesifik true . Pemerolehan kode tidak diulang.
  • Sebuah while loop mengeksekusi kode hanya jika kondisi spesifik true , dan mengulangi eksekusi saat kondisi tetap true .
  • Sebuah repeat loop mengeksekusi kode, dan mengulangi eksekusi jika kondisi adalah true .
  • A untuk loop mengeksekusi kode sejumlah kali tergantung pada masukan yang ditentukan.

Kondisi untuk if pernyataan, while loop, dan repeat loop dapat menjadi apa pun ekspresi Luau atau nilai. Jika nilai bukan 1> false1> atau 4> nil4> ,

Jika Pernyataan

Pernyataan dasar if mengevaluasi kondisinya. Jika kondisi benar, maka Luau mengeksekusi kode di antara then dan end.

Anda dapat menggunakan pernyataan elseif untuk menguji kondisi tambahan jika kondisi if adalah false. Anda dapat menggunakan pernyataan else untuk mengeksekusi kode j

Dalam sebuah rantai dari if, elseif, dan else kondisi, Luau menguji kondisi dari atas ke bawah, berhenti di kondisi pertama 1>truhan1>, dan mengeksekusi kode yang diikuti.


if 2 + 2 == 5 then
print("Two plus two is five") -- Tidak mencetak karena kondisi adalah false
elseif 2 + 3 == 5 then
print("Two plus three is five") -- Dua minus tiga adalah lima
else
print("All conditions failed") -- Tidak mencetak karena kondisi sebelumnya benar
end

Sementara Loops

A whiledo loop mengevaluasi apakah kondisi yang ditentukan benar atau salah. Jika kondisi adalah false atau 1> nil1>, maka loop berakhir, dan Luau menyebarkan kode dalam loop. Jika kondisi adalah 4> true4> maka


local timeRemaining = 10
while timeRemaining > 0 do
print("Seconds remaining: " .. timeRemaining)
task.wait(1)
timeRemaining -= 1
end
print("Timer reached zero!")
--[[ HasilOutput:
Seconds remaining: 10
Seconds remaining: 9
Seconds remaining: 8
Seconds remaining: 7
Seconds remaining: 6
Seconds remaining: 5
Seconds remaining: 4
Seconds remaining: 3
Seconds remaining: 2
Seconds remaining: 1
Timer reached zero!
]]

Lingkaran Tak Terbatas

Anda dapat menggunakan whiledo loop untuk menulis berbagai game loop tanpa batas dengan menetapkan true sebagai kondisi.


while true do
print("Looping...")
task.wait(0.5)
end
--[[ HasilOutput:
Looping...
Looping...
Looping...
Looping...
...
]]

Ulangi Loop

peat — until Loop berulang sampai kondisi benar. Pengujian kondisional mengevaluasi 1>setelah1> kode blok berjalan, jadi kode blok selalu berjalan setidaknya satu kali. Berbeda dengan bahasa lain, skop Luau dari variabel lokal yang diumumkan di dalam 4>


local currentGoblinCount = 18
-- Memunculkan goblin hingga maksimum 25 dalam game
repeat
spawnGoblin()
currentGoblinCount += 1
print("Current goblin count: " .. currentGoblinCount)
until currentGoblinCount == 25
print("Goblins repopulated!")
--[[ HasilOutput:
Current goblin count: 19
Current goblin count: 20
Current goblin count: 21
Current goblin count: 22
Current goblin count: 23
Current goblin count: 24
Current goblin count: 25
Goblins repopulated!
]]

Untuk Loop

A untuk loop mengeksekusi kode sejumlah kali, baik berdasarkan hitung mundur maupun jumlah item dalam koleksi.

Numerik Untuk Loop

A fordo loop menentukan jumlah kali untuk mengeksekusi loop menggunakan respons. Loop diumumkan dengan nilai awal, nilai akhir, dan peningkatan opsional.

Luau menetapkan counter sama dengan nilai awal, mengeksekusi blok kode di l for loop, dan kemudian menambahkan increment ke respons. Jika increment positif, maka proses diulang sampai counter sama dengan atau lebih besar dari nilai akhir. Jika increment negatif, maka proses diulang sampai counter sama dengan atau kurang dari nilai akhir.

Peningkatan opsional bertahan dengan 1 . Ini tidak perlu menjadi angka penuh.


for counter = 1, 3 do
print(counter)
end
--[[ HasilOutput:
1
2
3
]]
for counter = 1, 6, 2 do
print(counter)
end
--[[ HasilOutput:
1
3
5
]]
for counter = 2, 0, -0.5 do
print(counter)
end
--[[ HasilOutput:
2
1.5
1
0.5
0
]]

Umum Untuk Loop

Lingkaran umum for berulang di atas item dalam koleksi daripada urutan angka. Dengan lingkaran umum for berulang, Anda dapat mengeksekusi kode untuk setiap item dalam koleksi, dan dapat dengan mudah menggunakan setiap item dalam kode.

Untuk loop memerlukan fungsi, atau iterator, untuk mengiterasi berbagai jenis koleksi. Global ipairs() kembali iterator untuk array, dan global pairs() kembali iterator untuk典典ari. string library menyediakan 2>Library.string.gmatch()2> untuk mengiterasi over string.

Iterasi Umum

Di Luau, Anda dapat mengulangi lebih dari satu tabel menggunakan kata kunci in langsung di tabel, bukan menggunakan fungsi iterator seperti ipairs() :


for i, v in {1, 2, 3, 4, 5} do
print(i, v)
end

Generalized iteration juga memungkinkan Anda menggunakan metode metametode __iter untuk membuat fungsi iterator khusus. Contoh contoh ini mengiterasi di urutanbalik, dari elemen terakhirnya ke elemen pertamanya:


local myTable = {1, 2, 3, 4, 5}
myMetatable = {
__iter = function(t)
local i = #t + 1
return function()
i -= 1
if i > 0 then
return i, t[i]
end
end
end,
}
setmetatable(myTable, myMetatable)
for i, v in myTable do
print(i, v)
end
--[[ HasilOutput:
5 5
4 4
3 3
2 2
1 1
]]

Matriks

Fungsi ipairs() menghasilkan iterator yang beriterasi melalui indeks numerik di tabel dan mengembalikan index dan value untuk setiap elemen. Ini membuatnya sesuai untuk matriks, di mana semua indeks adalah numerik.


local array = {"a", "b", "c", "d", "e"}
for index, value in ipairs(array) do
print(index, value)
end
--[[ HasilOutput:
1 a
2 b
3 c
4 d
5 e
]]

Daftar kata

Fungsi pairs() menghasilkan iterator yang berjalan melalui semua indeks (termasuk indeks numerik) dalam tabel dan mengembalikan key dan value untuk setiap entri dalam tabel dizin. Ordo mengevaluasi elemen dalam tabel dizin adalah acak. Ini menjadikannya tepat untuk mengiterasi melalui dictionaries, di man


local dictionary = {
[1] = "a",
["Hello"] = "b",
[5] = "c",
[true] = "d",
["World"] = "f",
[false] = "e"
}
for key, value in pairs(dictionary) do
print(key, value)
end
--[[ HasilOutput:
Hello b
true d
false e
World f
5 c
1 a
]]

Kata Kontrol

Memecahkan Loop

Untuk mengakhiri loop, gunakan kata kunci break. Berikut contoh kode menunjukkan cara memecahkan whiledo loop.


local secondsElapsed = 0
local timeout = 5
while true do
task.wait(1)
secondsElapsed += 1
print("Seconds elapsed:", secondsElapsed)
if secondsElapsed == timeout then
break
end
end
print("Five seconds elapsed. Time to move on!")
--[[ HasilOutput:
1
2
3
4
5
Five seconds elapsed. Time to move on!
]]

Lebah yang Melanjutkan

Untuk mengakses ulang siklus dan memulai ulang, gunakan kata kunci continue. Sebuah siklus for siklus akan mengulingi kembali; while dan 1> peat1> — 4> até </


local function GetChildrenOfClass(parent: Instance, className: string): {Instance}
local children = {}
for _, child in parent:GetChildren() do
if child.ClassName ~= className then continue end -- Mengulangi loop
table.insert(children, child)
end
return children
end