Sắp xếp tùy chỉnh bằng hàm
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 8 trên 54.
table.sort() hoạt động rất tốt với các danh sách số hoặc chuỗi đơn giản, nhưng dữ liệu thực tế thường phức tạp hơn. Bạn có thể có một bảng chứa thông tin người chơi, vật phẩm trong kho hoặc điểm số trò chơi, trong đó mỗi mục lại là một bảng có nhiều trường.
Để sắp xếp các cấu trúc phức tạp này, bạn cần cho table.sort() biết chính xác cách so sánh hai phần tử. Lúc này, các hàm so sánh tùy chỉnh trở nên thiết yếu. Hàm so sánh nhận hai phần tử và trả về true nếu phần tử thứ nhất nên đứng trước phần tử thứ hai trong thứ tự đã sắp xếp.
Đây là ví dụ về một bảng ghi chép thông tin người chơi:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)Sau khi sắp xếp, bảng người chơi sẽ được xếp theo điểm số giảm dần, Bob đứng đầu (200), Charlie đứng thứ hai (175) và Alice đứng thứ ba (150). Hàm so sánh truy cập trường score của từng bảng người chơi để xác định thứ tự.
Bạn có thể sắp xếp theo bất kỳ trường nào mình muốn: tên theo thứ tự bảng chữ cái, cấp độ theo thứ tự số hoặc kết hợp nhiều tiêu chí.
Tự làm thử
Bài học này không có thử thách code.
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