pairs() và ipairs()
Thuộc phần Logic và luồng chương trình trong hành trình Lua của Coddy. Bài học 3 trên 54.
Giờ bạn đã học cả pairs() và ipairs(), điều quan trọng là hiểu khi nào nên dùng từng hàm. Lựa chọn hoàn toàn phụ thuộc vào cấu trúc của bảng và mục đích bạn muốn đạt được.
Dùng ipairs() khi bạn có bảng dạng danh sách với các khóa số nguyên liên tiếp bắt đầu từ 1. Hàm này xử lý các phần tử theo thứ tự và dừng ở giá trị nil đầu tiên, nên rất phù hợp với mảng cần giữ nguyên thứ tự.
Dùng pairs() khi bảng của bạn có khóa chuỗi, nhiều kiểu khóa khác nhau hoặc khi bạn cần truy cập mọi mục bất kể có khoảng trống hay không. Hàm này duyệt qua mọi cặp khóa và giá trị trong bảng mà không theo thứ tự cụ thể nào.
Hãy xem bảng hỗn hợp này:
local gameData = {
"Level 1",
"Level 2",
"Level 3",
currentLevel = 2,
playerName = "Hero"
}Nếu bạn dùng ipairs(), bạn sẽ chỉ thấy ba chuỗi cấp độ. Nếu bạn dùng pairs(), bạn sẽ thấy cả năm mục, bao gồm các khóa dạng chuỗi.
Thử thách
DễViết một hàm countSequentialItems nhận một bảng data và trả về số lượng phần tử có khóa số nguyên liên tiếp.
Dùng ipairs() để đếm số phần tử trong phần liên tiếp của bảng, bắt đầu từ chỉ số 1 cho đến nil đầu tiên. Điều này sẽ giúp bạn hiểu sự khác biệt giữa ipairs() và pairs() khi làm việc với các bảng hỗn hợp.
Tham số:
data(table): Một bảng hỗn hợp chứa cả khóa số nguyên liên tiếp và khóa chuỗi
Giá trị trả về: Số lượng phần tử liên tiếp (number)
Tự làm thử
function countSequentialItems(data)
-- Viết code ở đây
end
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
2Các hàm khác của thư viện table
table.concat()Tạo table và unpack()table.sort()Sắp xếp tùy chỉnh bằng hàmÔn tập: Bảng điểm cao5Dự án: Bộ máy trò chơi phiêu lưu bằng văn bản
Thiết lập dự án: Căn phòngLiên kết các phòngTự luyện tập: Trình biên dịch Lua online