Kontrol Yapıları

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Kontrol yapıları Luau kodu işleme akışını yöneten ifadelerdir. Vardır dört ana tip kontrol yapısı:

  • Bir if then else if statementı, belirli bir koşul true olduğunda sadece kodu çalıştırır. Kod çalıştırma tekrarlanmaz.
  • A while loop kodu sadece belirli bir koşul true olduğunda çalıştırır ve koşul true olduğu sürece tekrarlar.
  • Bir peat loop kodu yürütür ve koşul true ise tekrarlar.
  • Bir for loop kodu, belirlenen girdilere bağlı olarak bir set sayıda kez çalıştırır.

if ifadeleri, while döngüleri ve repeat döngüleri için koşul, herhangi bir Luau ifadesi veya değeri olabilir. Eğer bir ifade 1> force1> veya 4>

Eğer Statistikler

Ana if ifadesi durumunu test eder. Eğer durum doğruysa, Luau kodu then ve end arasında çalışır.

Eğer if koşulu sahteysa, ek koşullar için else ifadesini kullanabilirsiniz. 1> else1> ve 4> else 4> koşullarının tüm

Bir if , elseif ve else koşullarının bir zinciri içinde, Luau koşulları üstten test eder, ilk 1> true1> koşulunu durdurur ve sonraki 8> else8> kodunu çalıştırır.


if 2 + 2 == 5 then
print("Two plus two is five") -- Kondisyon sahte olduğu için印刷 etmez
elseif 2 + 3 == 5 then
print("Two plus three is five") -- İki plus üç = beş
else
print("All conditions failed") -- Önceki koşul doğru olduğu için yazdırmaz
end

Loop'lar

A whiledo bir çözgü değerlendirmesi, belirli bir koşulun doğru veya yanlış olduğunu değerlendirir. Eğer koşul false veya 1> nil1> ise, çözgü değerlendirmesi sona erer ve


local timeRemaining = 10
while timeRemaining > 0 do
print("Seconds remaining: " .. timeRemaining)
task.wait(1)
timeRemaining -= 1
end
print("Timer reached zero!")
--[[ Sonuç çıkışı:
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!
]]

Sonsuz Döngüler

while — do 循环を yazmak için koşul olarak true'i ayarlarak sonsuz oyun 循环leri yazabilirsiniz.


while true do
print("Looping...")
task.wait(0.5)
end
--[[ Sonuç çıkışı:
Looping...
Looping...
Looping...
Looping...
...
]]

Geri Sayımları Tekrarla

The repeatuntil loop repeats until a condition is true. The conditional test evaluates after the code block runs, so the code block always runs at least once. Unlike other languages, the Luau scope of a local variable declared inside a 1>peat1> — 4> hasta


local currentGoblinCount = 18
-- oyunmaksimum 25 goblin oluşturur
repeat
spawnGoblin()
currentGoblinCount += 1
print("Current goblin count: " .. currentGoblinCount)
until currentGoblinCount == 25
print("Goblins repopulated!")
--[[ Sonuç çıkışı:
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!
]]

Looplar için

A for loop executes code a set number of times, either based on a sayısal sayıcı or the number of koleksiyon içindeki eşyaların sayısı.

Döngüler için Sayı

Bir fordo loop, karşı teklif'ı kullanarak döngüyü yürütmenin kaç kere yapılacağını belirler. Döngü, bir başlangıç değeri, son değeri ve seçici artışı ile ilan edilmiştir.

Luau, başlangıç değerine eşit sayıda iletkeni yürütür, for döngüsündeki kod blokunu çalıştırır ve ardından karşı teklifartırıcısını ekler. Eğer artırıcı olumluysa, sayacın son değerine eşit veya daha büyük olması için işlem tekrarlanır. Eğer artırı

Opcional artış 1 olarak varsayılır. Bir bütün sayı olması gerekmez.


for counter = 1, 3 do
print(counter)
end
--[[ Sonuç çıkışı:
1
2
3
]]
for counter = 1, 6, 2 do
print(counter)
end
--[[ Sonuç çıkışı:
1
3
5
]]
for counter = 2, 0, -0.5 do
print(counter)
end
--[[ Sonuç çıkışı:
2
1.5
1
0.5
0
]]

Genel Loop için

Genel for for dizi, bir koleksiyonun bir dizi değil, öğelerin üzerinde itelenir. Genel for for dizi ile, koleksiyon içindeki her bir öğenin kodunu yürütmenizi sağlar ve kodu kolayca kullanabilirsiniz.

For döngüleri için bir işlev veya bir itici gerekir, böylece farklı türlerdeki koleksiyonlar üzerinde iterecek şekilde döngü yapabilirsiniz. Global ipairs() , dizinler için bir itici içerir ve global pairs() , döngüler için bir işlev içerir. Library.

Genelleştirilmiş Birleştirme

Luau'da, in kelimesini kullanarak tabloyu doğrudan tablo üzerinde tekrar edebilirsiniz, bir itici işlevi kullanarak değil :


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

Genelized iteration ayrıca özelleştirilmiş bir itici işlevi oluşturmak için __iter metodunu kullanır. Bu örnek, son elemanından ilkine doğru bir matris üzerinde itilir:


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
--[[ Sonuç çıkışı:
5 5
4 4
3 3
2 2
1 1
]]

Matrisler

The ipairs() function returns an iterator that iterates through numerical indexes in a table and returns an index ve value for each element. This makes it appropriate for arrays, where all indexes are numeric.


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

Sözlükler

The pairs() function returns an iterator that iterates through all indexes (including numerical indexes) in a table and returns a key and value for each entry in the dictionary. The order of traversing elements in a dictionary table is arbitrary. This makes it appropriate for iterating over dictionaries, where items are stored out of order with non-numeric indexes.


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
--[[ Sonuç çıkışı:
Hello b
true d
false e
World f
5 c
1 a
]]

Kontrol Etme Kelimeleri

Kırıcı Çemberler

Bir döngüyü bitirmek için, break kelimesini kullanın. Aşağıdaki kod örneği, sonsuz whiledo döngüsünü gösterir.


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!")
--[[ Sonuç çıkışı:
1
2
3
4
5
Five seconds elapsed. Time to move on!
]]

Devam eden döngüler

Bir döngüyü tekrar iterecek ve yeniden başlatmak için, continue kelimesini kullanın. Bir for döngüsü, sayacı iterecek; while ve 2> peat2> — 5>


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