2015-04-11 14 views
8

Nói chung, cú pháp:Tiếp theo() tìm kiếm một __pairs metamethod?

for k, v in pairs(t) do 
    .... 
end 

tương đương với:

for k, v in next, t do 
    .... 
end 

Nhưng nếu t có metamethod __pairs? Kiểm tra chức năng tiêu chuẩn next() cho điều này? Nếu không, không phải là tốt hơn để luôn luôn sử dụng pairs khi lặp qua các bảng và không bao giờ gọi trực tiếp next()?

Trả lời

5

Không, next() không kiểm tra __pairs. The manual không nói như vậy.

Nó có thể được xác nhận gấp đôi từ mã nguồn có liên quan, so sánh luaB_pairsluaB_next.

Có thể có lần khi bạn không muốn kiểm tra cho __pairs metamethod, vậy tại sao nói luôn sử dụng pairs qua next?

Các vấn đề liên quan