Menu
CoddyTech

Duyệt bảng

Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 17 trên 80.

Bạn đã lặp qua các bảng Lua nhiều lần rồi: Luau giữ nguyên các vòng lặp và thêm kiểu cho biến vòng lặp. Với mảng (array), ipairs duyệt các phần tử theo thứ tự, từ chỉ số 1 đến #t, và bạn có thể chú thích kiểu cho cả hai biến:

local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
    print(`Day {day}: {temp}`)
end

Hãy nhớ rằng ipairs dừng ở chỉ số đầu tiên bị thiếu: một chỗ khuyết nil ở giữa sẽ khiến vòng lặp kết thúc sớm. Điều này hiếm khi xảy ra với các mảng được giữ gìn tốt, nhưng bạn nên biết.

Với bản đồ (map), hãy dùng pairs, hàm này duyệt mọi cặp khóa/giá trị, kể cả khóa chuỗi. Trong bản đồ {[string]: number}, các biến vòng lặp lần lượt có kiểu tự nhiên là string và number:

local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
    print(`{name} is {age}`)
end

Một lưu ý quan trọng: pairs duyệt các khóa thuộc phần băm theo thứ tự không được đảm bảo. Thứ tự có thể khác nhau giữa các lần chạy. Khi cần đầu ra xác định (báo cáo đã sắp xếp, bài kiểm thử), hãy đưa các khóa vào một mảng, sắp xếp mảng đó bằng table.sort, rồi lặp qua các khóa đã sắp xếp bằng ipairs và dùng chúng để truy cập bản đồ.

challenge icon

Thử thách

Dễ

In ra nhiệt độ của một tuần và tổng của chúng.

  1. Khai báo local temps: {number} = {12, 15, 11, 14} và local total = 0.
  2. Lặp bằng for day: number, temp: number in ipairs(temps) do, in ra `Day {day}: {temp}` và cộng temp vào total.
  3. Sau vòng lặp, in ra total.

Nhấn Run Code: đầu ra hiển thị Day 1: 12 đến Day 4: 14, rồi đến 52.

Tự làm thử

-- 1) Khai báo temps: {number} và total = 0
-- 2) Dùng vòng lặp (loop) với day và temp đã khai báo kiểu dữ liệu, in ra từng ngày rồi cộng vào total
-- 3) In ra total

Tất cả bài học trong Giới thiệu về Luau

Tự luyện tập: Trình biên dịch Luau online