Duyệt bằng pairs()
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 1 trên 54.
pairs() giúp bạn làm điều này bằng cách cho phép bạn lặp qua tất cả mục trong bảng, bất kể khóa thuộc kiểu dữ liệu nào.Cú pháp (syntax) sử dụng pairs() trong vòng lặp for trông như sau:for key, value in pairs(myTable) do
-- dùng key và value ở đây
endpairs() cung cấp cả khóa lẫn giá trị tương ứng. Nhờ vậy, bạn có thể truy cập và xử lý cả hai thông tin cùng lúc.Đây là một ví dụ thực tế về kho đồ của người chơi:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() hoạt động với mọi kiểu khóa, bao gồm chuỗi, số hoặc thậm chí các bảng khác.Làm việc với chuỗiTrong Lua, bạn có thể nối các chuỗi bằng toán tử nối, gồm hai dấu chấm (..). Ví dụ, "Hello" .. " " .. "World" cho kết quả là "Hello World".Nếu cần định dạng văn bản trên nhiều dòng, bạn có thể dùng ký tự thoát xuống dòng "\n". Khi Lua gặp "\n" bên trong một chuỗi, Lua sẽ hiểu đó là lệnh chuyển sang dòng tiếp theo.Ví dụ: print("Line 1\nLine 2") sẽ in ra:Line 1
Line 2Thử thách
DễViết một hàm printInventory nhận bảng inventory và trả về một chuỗi đã định dạng, liệt kê tất cả mặt hàng cùng số lượng của chúng.
Dùng pairs() để duyệt qua bảng inventory và tạo một chuỗi trong đó mỗi dòng hiển thị tên mặt hàng, theo sau là số lượng theo định dạng item: quantity. Mỗi mặt hàng nằm trên một dòng riêng.
Để đặt mỗi mặt hàng trên một dòng riêng, hãy dùng ký tự xuống dòng "\n" giữa các mục. Ví dụ, "apple: 5\nbanana: 3" sẽ hiển thị thành hai dòng riêng. Lưu ý không thêm "\n" ở đầu trước mặt hàng đầu tiên: chỉ thêm ký tự này giữa các mặt hàng.
Tham số:
inventory(table): Bảng dạng từ điển, trong đó các khóa là tên mặt hàng (chuỗi) và các giá trị là số lượng (số)
Giá trị trả về: Một chuỗi có mỗi mặt hàng và số lượng nằm trên một dòng riêng, được phân tách bằng "\n". Ví dụ đầu ra cho {apple=5, banana=3}:apple: 5banana: 3
Tự làm thử
function printInventory(inventory)
-- Để định dạng đầu ra, bạn có thể nối các chuỗi bằng toán tử (operator) '..'.
-- Để xuống dòng, bạn dùng ký tự (character) đặc biệt '\n'.
-- Bạn có thể cần theo dõi xem mình đang thêm phần tử (element) đầu tiên hay phần tử tiếp theo
-- để quyết định có xuống dòng trước phần tử đó hay không.
-- Viết code ở đây
endBà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