cặp và ipairs

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

Nhiều kịch bản sẽ thường cần duyệt qua các từ điển hoặc mảng. Nhưng đôi khi, bạn có thể không biết điểm bắt đầu và điểm kết thúc của những cấu trúc dữ liệu này. Ví dụ, một từ điển của người chơi có thể đang thay đổi, hoặc người chơi có thể có một danh sách hàng hóa với các kích thước khác nhau.

Trong những tình huống này, bạn có thể sử dụng pairs()ipairs(). Chúng có thể được sử dụng với một vòng lặp for để duyệt qua từng phần tử mà không biết điểm bắt đầu và điểm kết thúc.

Bài viết này sẽ đề cập đến việc sử dụng chúng, và có một ví dụ kịch bản thực tế nơi bạn theo dõi đơn đặt hàng tại một nhà hàng trong một trò chơi nấu ăn.

Từ điển và pairs()

pairs() được sử dụng với từ điển. Một ví dụ được thể hiện dưới đây.

local myDictionary = {
["Người chơi xanh"] = "Ana",
["Người chơi vàng"] = "Binh",
["Người chơi đỏ"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " là " .. value)
end

pairs() có thể được sử dụng để làm việc với khóa, giá trị hoặc cả hai của một phần tử từ điển. Trong vòng lặp for dưới đây, biến đầu tiên là khóa. Biến thứ hai là giá trị. Từ điển mà bạn muốn làm việc được truyền vào pairs().

local inventory = {
["Gạch vàng"] = 43,
Cà rốt = 3,
Cây đuốc = 2,
}
print("Bạn có:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Khi thực thi, đoạn mã sẽ in ra như sau:

Bạn có:
43 Gạch vàng
3 Cà rốt
2 Cây đuốc

Mảng và ipairs()

ipairs() được sử dụng với mảng. Chữ "i" trong ipairs() đứng cho "chỉ số." Sử dụng ipairs() và mảng kết hợp với một vòng lặp for để làm việc với các giá trị có thứ tự như bảng xếp hạng. Một ví dụ như sau.

local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Người chiến thắng #" .. playerRank .. " là " .. playerName)
end

Khi thực thi, đoạn mã sẽ in ra như sau:

Người chiến thắng #1 là Ali
Người chiến thắng #2 là Ben
Người chiến thắng #3 là Cammy

Thực hành - Mô phỏng súp nhà hàng

Hãy cùng làm một ít súp cho một mô phỏng nhà hàng nơi mà người chơi chọn từ danh sách các nguyên liệu có thể cho súp. Các nguyên liệu sẽ được lưu trữ dưới dạng khóa, và giá trị sẽ bắt đầu bằng false để người chơi chỉ nhận được những gì họ chọn.

Sử dụng pairs() để xem những gì đã được chọn, và sau đó sử dụng ipairs() để in danh sách các nguyên liệu.

  1. Tạo một từ điển mới tên là menu. Thêm 3 - 5 cặp khóa-giá trị trong đó khóa là nguyên liệu và giá trị là false.

    local menu = {
    bắp cải = false,
    thịt bò = false,
    cà chua = false,
    mì = false,
    }
  2. Dưới từ điển menu, thêm một mảng trống sẽ được lấp đầy bằng lựa chọn của khách hàng sau này.

    -- Súp của khách hàng
    local selectedIngredients = {}
  3. Sử dụng pairs() để kiểm tra xem mỗi nguyên liệu trong từ điển có được đánh dấu true hay false. Nếu true, thêm nguyên liệu vào súp.

    -- Súp của khách hàng
    local selectedIngredients = {}
    -- Thêm lựa chọn của khách hàng vào súp
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Nhắc lại đơn hàng với khách hàng. Trong kịch bản, mã hóa các điều sau đây.

    • Kiểm tra xem có một mục menu nào trong selectedIngredients không. Nếu có, in ra "Bạn đã đặt súp với: ".
    • Sử dụng ipairs() để duyệt qua mảng selectedIngredients và in mỗi nguyên liệu.
    • Kiểm tra bằng cách thay đổi ít nhất một mục menu thành true.
    -- In đơn hàng súp từ "selectedIngredients"
    if #selectedIngredients > 0 then
    print("Bạn đã đặt súp với: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Trong câu lệnh if kiểm tra xem có mục menu không, thêm một điều kiện else thông báo cho khách hàng nếu không có nguyên liệu nào được chọn.

    if #selectedIngredients > 0 then
    print("Bạn đã đặt súp với: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Không có gì được chọn. Bạn không thấy đói sao?")
    end

Các thử thách tùy chọn

Dưới đây là một số thử thách áp dụng việc sử dụng pairs và ipairs theo những cách khác nhau. Hãy thử xem bạn có thể xây dựng mã cho những điều này không.

Thử thách: Tạo một NPC Hầu bàn Thay vì sử dụng cửa sổ Output, hãy sử dụng NPC từ Giới thiệu về Mảng để tạo một hầu bàn nhận đơn hàng của khách hàng.

Thử thách: Cho phép Người chơi Đặt hàng Cho phép người chơi chọn một nguyên liệu bằng cách chạm vào một phần vật lý như một lời nhắc gần. Để biết thêm thông tin, xem Nhắc gần.

Thử thách Nâng cao: Làm Cho Tôi Một Mô phỏng Súp Tạo một mô phỏng nhà hàng nơi người chơi là đầu bếp! Người chơi sẽ phải kết hợp các nguyên liệu để khớp với đơn hàng được đưa ra bởi hầu bàn.

  1. Tạo các đạo cụ trong trò chơi cho 3 - 5 nguyên liệu khác nhau.
  2. Tạo 3 - 5 công thức sử dụng từ điển tương tự như công thức trong bài học này.
  3. Tạo một mảng chứa tất cả các công thức.
  4. Chọn ngẫu nhiên một công thức và sử dụng một NPC để cho người chơi biết nguyên liệu là gì.
  5. Tạo một từ điển mới để tạo một công thức dựa trên những nguyên liệu nào mà người chơi chạm vào.
  6. So sánh công thức của người chơi với công thức được chọn bởi NPC.
  7. Tăng thêm thách thức bằng cách thêm một điều kiện bổ sung, chẳng hạn như một bộ đếm thời gian.
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.