【发布时间】:2011-03-08 12:27:10
【问题描述】:
我对 Lua 有点陌生(还没有真正做太多事情),我正试图将我的注意力集中在元表上。我以前让他们工作,但现在(几个月后)我遇到了一些非常奇怪的事情。
这个脚本在运行时应该打印什么?
__mt = {}
__mt.__index = function(table, key)
print("In __index")
return 99
end
test = {}
test.x = 5
setmetatable(test, __mt)
print(test.x)
就我个人而言,我希望它打印“In __index”(来自元方法),然后是 99。但是,每当我运行它时,我都会得到 5。我所做的任何事情都无法让索引元方法运行。它就像我使用 rawget() 一样。
奇怪的是,添加
print(getmetatable(test).__index(test, "x"))
会做正确的事。元表在那里,__index() 是正确的,只是没有被调用。
这是一个错误还是我只是在做一些愚蠢的事情?我说不清楚。
【问题讨论】:
标签: lua