Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 防止Lua表中的函数重写_Eclipse_Lua_Overriding_Lua Table - Fatal编程技术网

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)

我已经编写了一个元表和函数,这些元表和函数使用传递给函数类的参数名创建一个表