Cấu trúc điều khiển

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Cấu hình kiểm soát là những tuyên bố quản lý dòng chảy của thực hiện mã Luau. Có bốn loại chính của cấu hình kiểm soát:

  • Một if then else tuyên bố thi hành mã chỉ nếu một điều kiện được xác định là true . Việc thi hành mã không lặp lại.
  • Một while loop thực hiện mã chỉ nếu một điều kiện được xác định là true và lặp lại thực hiện mã trong khi điều kiện vẫn là true .
  • Một lặp lại loop thi động mã, và lặp lại thi động nếu điều kiện là true .
  • Một for loop thiết bị thi hành mã một set number of times depending on specified inputs.

Điều kiện cho các if tuyên bố, while lặp và repeat lặp có thể là bất kỳ biểu tượng Luau hoặc giá trị. Nếu một biểu tượng khô

Nếu Tuyên Bố

Các điều kiện if cơ bản kiểm tra điều kiện của nó. Nếu điều kiện là đúng, thì Luau thi động mã giữa thenend.

Bạn có thể sử dụng một elseif điều kiện để kiểm tra cho các điều kiện bổ sung nếu điều kiện if if điều

Trong một chuỗi các if, elseif, và else điều kiện, Luau kiểm tra các điều kiện từ trên xuống dưới, dừng ở điều kiện đầu tiên 1>truong1> và thi행 4>giải4> mã sau đó.


if 2 + 2 == 5 then
print("Two plus two is five") -- Không in vì điều kiện là sai
elseif 2 + 3 == 5 then
print("Two plus three is five") -- Hai nhân ba là năm
else
print("All conditions failed") -- Không in vì điều kiện trước đó là đúng
end

Trong khi Loops

Một whiledo lượt đánh giá xem điều kiện đã được quy định có đúng hay sai. Nếu điều kiện đó là false hoặc 1> nil1> thì lượt đánh gi


local timeRemaining = 10
while timeRemaining > 0 do
print("Seconds remaining: " .. timeRemaining)
task.wait(1)
timeRemaining -= 1
end
print("Timer reached zero!")
--[[ Kết quả ra:
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!
]]

Vòng lặp vô tận

Bạn có thể sử dụng một whiledo lượt lặp vô tận game lỗi bằng cách đặt true là điều kiện.


while true do
print("Looping...")
task.wait(0.5)
end
--[[ Kết quả ra:
Looping...
Looping...
Looping...
Looping...
...
]]

Lặp lại

The repeatuntil loop repeats until a condition is true. The conditional test evaluates sau 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> until4> loop includes the condition.


local currentGoblinCount = 18
-- Spawn goblin lên đến mức tối đa 25 trong trò chơi
repeat
spawnGoblin()
currentGoblinCount += 1
print("Current goblin count: " .. currentGoblinCount)
until currentGoblinCount == 25
print("Goblins repopulated!")
--[[ Kết quả ra:
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!
]]

Đối với các lỗ

A for loop executes code a set number of times, either based on a number of items in a collection or the number of mục trong một bộ sưu tập.

Biểu tượng cho lặp

Một fordo lặp xác định số lần thực hiện lặp sử dụng một trả giá. Lặp được xác định với một giá trị khởi đầu, một giá trị cuối cùng và một giá trị tăng trưởng tùy chọn.

Luau đặt mức đếm bằng giá trị khởi đầu, thi hành mã khối trong vòng for , sau đó thêm một tăng trưởng vào trả giáđếm. Nếu tăng trưởng là dương, thì quá trình lặp lại cho đến khi mức đếm là bằng hoặc nhỏ hơn giá trị

Increment bắt đầu mặc định là 1. Nó không cần phải là một số toàn.


for counter = 1, 3 do
print(counter)
end
--[[ Kết quả ra:
1
2
3
]]
for counter = 1, 6, 2 do
print(counter)
end
--[[ Kết quả ra:
1
3
5
]]
for counter = 2, 0, -0.5 do
print(counter)
end
--[[ Kết quả ra:
2
1.5
1
0.5
0
]]

Chung cho các lỗ

Vòng lặp genéric for lặp qua các mục trong một bộ sưu tập thay vì là một chuỗi số. Với genéric for lặp, bạn có thể thi hành mã cho mỗi mục trong bộ sưu tập, và có thể dễ dàng sử dụng mỗi mục trong mã.

Đối với các lượt trùm, hàm cần thiết để lặp lại các loại bộ sưu tập khác nhau. Thư viện toàn cầu ipairs() trả lại một hàm cho các bộ sưu tập, và thư viện toàn cầu pairs() trả lạ

Iteration chung

Ở Luau, bạn có thể lặp lại một bảng bằng cách sử dụng trực tiếp in Keyword trên bảng, thay vì sử dụng chức năng lặp lại như ipairs(): :


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

Generalized iteration cũng cho phép bạn sử dụng metamethode __iter để tạo một chức năng it器 tùy chỉnh. Ví dụ này itere trên một bảng trong trật tự ngược, từ một thành phần cuối cùng đến một thành phần đầu tiên:


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
--[[ Kết quả ra:
5 5
4 4
3 3
2 2
1 1
]]

Ma trận

Hàm ipairs() trả về một đơn bộ đếm đi qua các chỉ số trong một bảng và trả một đơn indexvalue cho mỗi yếu tố. Điều này làm cho nó phù hợp cho các bảng, nơi tất cả các chỉ số là số.


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

Từ điển

Hàm pairs() trả về một it器 đi qua tất cả các chỉ số (bao gồm cả các chỉ số số) trong một bảng và trả một keyvalue cho mỗi hàng trong bảng dictionaries. Cấu trúc trả tiền của các hàng tr


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
--[[ Kết quả ra:
Hello b
true d
false e
World f
5 c
1 a
]]

Điều khiển từ khóa

Đập lỗi

Để buộc phải kết thúc một lượt lặp, hãy sử dụng các từ khóa break . Các ví dụ mã sau đây cho thấy cách phá vỡ một lượt lặp vô tận whiledo lượt lặp.


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!")
--[[ Kết quả ra:
1
2
3
4
5
Five seconds elapsed. Time to move on!
]]

Lặp lại

Để buộc vào một lần lượt lại và khởi động lại, hãy sử dụng từ khóa continue. Một lần lượt lại for lần lượt lại counter


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