Lua: 为什么我的 table 没有从 MetaTable 中找到方法?
Lua: Why is my table not finding the method from the MetaTable?
在我的示例中,我正在创建一个 class 人并为成员“姓名”设置默认值。
我有一个构造函数和一个名为 sayHi() 的函数。每当我尝试调用该函数时,我都会收到错误消息:
lua: test.lua:22: attempt to call a nil value (method 'sayHi')
stack traceback:
test.lua:22: in main chunk
[C]: in ?
据我所知,我正在创建一个新的 table,将 table 的元 table (setmetatable) 设置为 [=18] =],然后返回 table,这意味着我应该可以使用它的 sayHi() 函数,但我得到的是 nil 值。
Person = {}
Person.Name = "No name inputted"
function Person:new(name)
local o = {}
setmetatable(o,self)
self._index = self
return o
end
function Person:sayHi()
print(self.Name .. " says hi")
end
firstPerson = Person:new("Michael")
secondPerson = Person:new("Julian")
print(firstPerson.Name)
secondPerson:sayHi()
元表上正确的 属性 名称是 __index
(两个前导下划线)。您正在分配给 _index
(一个前导下划线)。
在我的示例中,我正在创建一个 class 人并为成员“姓名”设置默认值。 我有一个构造函数和一个名为 sayHi() 的函数。每当我尝试调用该函数时,我都会收到错误消息:
lua: test.lua:22: attempt to call a nil value (method 'sayHi')
stack traceback:
test.lua:22: in main chunk
[C]: in ?
据我所知,我正在创建一个新的 table,将 table 的元 table (setmetatable) 设置为 [=18] =],然后返回 table,这意味着我应该可以使用它的 sayHi() 函数,但我得到的是 nil 值。
Person = {}
Person.Name = "No name inputted"
function Person:new(name)
local o = {}
setmetatable(o,self)
self._index = self
return o
end
function Person:sayHi()
print(self.Name .. " says hi")
end
firstPerson = Person:new("Michael")
secondPerson = Person:new("Julian")
print(firstPerson.Name)
secondPerson:sayHi()
元表上正确的 属性 名称是 __index
(两个前导下划线)。您正在分配给 _index
(一个前导下划线)。