2015-09-12 13 views

Trả lời

5

số

Nếu bạn có thể chịu được sự khác biệt giữa hai biểu thức những thisismytable:whatismytable() thay vì thisismytable.whatismytable, bạn có thể làm:

local thisismytable = { 
    non = sequitur, 
    whatismytable = function (self) return self end 
} 

Thử nghiệm:

print(thisismytable) 
print(thisismytable:whatismytable()) 

More sử dụng:

print(thisismytable:whatismytable().non) 
+0

Wow, đó thực sự là loại thiên tài. Cảm ơn bạn. – SideCode

+0

Đó là một khả năng, nhưng không phải là thiên tài:/':' chỉ gửi bảng truy cập như là đối số đầu tiên được gọi là hàm - nó chỉ là một wrapper xung quanh nỗ lực của bạn với chức năng trên không. – Youka

+1

@Youka Tôi đồng ý. Tôi chỉ làm điều đó một cách đơn giản như trong câu hỏi. –

4

Bạn không thể. Tôi sử dụng một hàm trợ giúp.

local function ref(t) 
    for k, v in next, t do 
    if v == ref then t[k] = t end 
    end 
    return t 
end 

local root = ref{left=ref, right=ref} 
assert(root.left == root) 
Các vấn đề liên quan