Một nhu cầu phổ biến trong nhiều cấu trúc dữ liệu là trả về giá trị. Bài viết này sẽ đề cập đến việc tìm kiếm một bảng sử dụng pairs() hoặc ipairs() cho một nửa của bất kỳ phần tử bảng nào, chẳng hạn như khóa hoặc giá trị, để tìm và trả về nửa còn lại.
Ví dụ sử dụng một mảng liệt kê các con tàu đang chờ sửa chữa. ipairs() được sử dụng để trả về vị trí của một con tàu trong hàng.
local shipToFind = "Void Racer"
-- Các con tàu chờ sửa chữa
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Lấy vị trí trong hàng
local function getPlaceInLine(shipName)
for placeInLine, ship in ipairs(waitingShips) do
if ship == shipName then
return placeInLine
end
end
end
-- In vị trí trong hàng
local placeInLine = getPlaceInLine(shipToFind)
print("Vị trí của bạn trong hàng là " .. placeInLine)
Ví dụ tìm kiếm từ điển
Bạn đã bao giờ tìm kiếm một con thú cưng bị mất trong nhà đi từng phòng một chưa? Trong mã của bạn, hãy viết một hàm để tìm kiếm qua một từ điển có tên là house để xem phòng nào chứa một chú cún bị mất.
Sao chép từ điển dưới đây để sử dụng như ngôi nhà.
local house = {kitchen = "đống rác",livingRoom = "mèo con",bedroom1 = "không có ai ở đó",bedroom2 = "cún con",}Tạo một hàm mới có tên là findPet() để tìm kiếm trong từ điển. Bao gồm các tham số cho từ điển cần tìm kiếm, và giá trị cần tìm.
Sử dụng pairs() để lặp qua từ điển. Hãy thử viết mã của riêng bạn trước khi kiểm tra với giải pháp bên dưới.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doendendKhi vòng lặp for lặp qua từ điển, sử dụng return để trả về phòng nơi con thú cưng được tìm thấy.
local function findPet(whereToSearch, searchFor)for place, value in pairs(whereToSearch) doif value == searchFor thenreturn placeendendend