Ôn tập: bảng chỉ đọc
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 23 trên 54.
Thử thách
DễViết một hàm makeReadOnly nhận original và trả về một phiên bản chỉ đọc của bảng.
Tạo một bảng proxy có metatable cho phép đọc từ bảng gốc nhưng ngăn mọi sửa đổi.
Logic:
- Tạo một bảng proxy trống
- Tạo một metatable có
__indextrỏ đến bảng gốc (để cho phép đọc) - Thêm
__newindexvào metatable và để nó không làm gì (để chặn sửa đổi) - Gắn metatable vào proxy bằng
setmetatable() - Trả về bảng proxy
Tham số:
original(table): Bảng cần bảo vệ khỏi các sửa đổi
Giá trị trả về: Một bảng proxy cho phép chỉ đọc bảng gốc (table)
Tự làm thử
function makeReadOnly(original)
-- Viết code ở đây
end
Tất cả bài học trong Logic và luồng chương trình
4Giới thiệu về metatable
Metatable là gì?setmetatable và getmetatableMetamethod __indexMetamethod __newindexMetamethod __tostringMetamethod số học phần 1Metamethod số học phần 2Ôn tập: bảng chỉ đọc2Cá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