Trả giá trị từ các bảng

*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.

Một nhu cầu chung trong nhiều cấu trúc dữ liệu là trả lại giá trị.Bài viết này sẽ bao gồm tìm kiếm một bảng bằng cách sử dụng pairs() hoặc ipairs() cho một nửa của bất kỳ thành phần bảng nào, chẳng hạn như chìa khóa hoặc giá trị, để tìm và trả lại nửa còn lại.

Ví dụ sử dụng danh sách một loạt các tàu đang chờ sửa chữa. ipairs() được sử dụng để trả lại vị trí của một con tàu trong hàng.


local shipToFind = "Void Racer"
-- Các tàu chờ sửa chữa
local waitingShips = {"Battle Sun", "Void Racer", "The Big Slow"}
-- Nhận chỗ 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("Your place in line is " .. placeInLine)

Ví dụ tìm kiếm từ điển

Bạn đã bao giờ tìm kiếm một vật nuôi bị mất trong nhà đi phòng theo phòng chưa? Trên mã của riêng bạn một chức năng để tìm kiếm qua một từ điển có tên là nhà để xem phòng nào có một chú chó con bị mất.

  1. Sao chép bảng từ điển bên dưới để hành động như nhà.


    local house = {
    kitchen = "pile of Junk",
    livingRoom = "kitten",
    bedroom1 = "nobody there",
    bedroom2 = "puppy",
    }
  2. Tạo một chức năng mới có tên là findPet() để tìm kiếm bách khoa toàn thư. Bao gồm các tham số cho bách khoa nào để tìm kiếm và giá trị để tìm kiếm.

  3. Sử dụng pairs() để lặp qua từ điển. Hãy thử lập trình riêng trước khi kiểm tra công việc của bạn trong giải pháp bên dưới.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    end
    end
  4. Khi vòng lặp for lặp qua từ điển, sử dụng return để truyền lại phòng nơi con vật được tìm thấy.


    local function findPet(whereToSearch, searchFor)
    for place, value in pairs(whereToSearch) do
    if value == searchFor then
    return place
    end
    end
    end