Eclipse 防止Lua表中的函数重写
在我的程序中,当为同一个表定义了两个同名函数时,我希望我的程序给出一个错误。发生的事情是,它只是调用最后一个函数并执行它 下面是一个示例代码Eclipse 防止Lua表中的函数重写,eclipse,lua,overriding,lua-table,Eclipse,Lua,Overriding,Lua Table,在我的程序中,当为同一个表定义了两个同名函数时,我希望我的程序给出一个错误。发生的事情是,它只是调用最后一个函数并执行它 下面是一个示例代码 Class{'Cat'} function Cat:meow( ) print("Meow!") end function Cat:meow() print("Mmm") end kitty = Cat:create() kitty:meow() 执行的结果只是:“嗯” 相反,我希望给出类似于错误消息的消息。不幸的是,\uuuuuNewIn
Class{'Cat'}
function Cat:meow( )
print("Meow!")
end
function Cat:meow()
print("Mmm")
end
kitty = Cat:create()
kitty:meow()
执行的结果只是:“嗯”
相反,我希望给出类似于错误消息的消息。不幸的是,
\uuuuuNewIndex
没有截获对已经存在的字段的赋值。因此,唯一的方法是保持Cat
为空,并将其所有内容存储在代理表中
我不知道OOP库的性质,因此您必须自己合并此示例:
local Cat_mt = {}
-- Hide the proxy table in closures.
do
local proxy = {}
function Cat_mt:__index(key)
return proxy[key]
end
function Cat_mt:__newindex(key, value)
if proxy[key] ~= nil then
error("Don't change that!")
end
proxy[key] = value
end
end
Cat = setmetatable({}, Cat_mt)
我已经编写了一个元表和函数,这些元表和函数使用传递给函数类的参数名创建一个表