从Lua的班级中获取一张桌子

时间:2013-12-22 22:21:11

标签: class lua

快速提问,我如何从SimpleClass变量获取名为props的表?

local SimpleClass = {}
local SimpleClass_mt = {__index = SimpleClass}

function SimpleClass:new()
    local props = {name = " yolo"}
    setmetatable(props, SimpleClass_mt)
    return props
end

--get props from SimpleClass here

--my attempt here
local propsFromSimpleClass = getmetatable(SimpleClass)--clearly won't work

2 个答案:

答案 0 :(得分:2)

我认为你有点误导自己。

尝试这种方法

<强> simple_class.lua

SimpleClass = {}
SimpleClass.__index = SimpleClass

function SimpleClass:new()
    local obj = {}
    setmetatable(obj, SimpleClass)
    obj.name = "yolo"
    return obj
end

<强> example.lua

require "simple_class"

local instance = SimpleClass:new()

print(instance.name)
-- yolo

如需更多帮助,我会从Lua用户wiki

查看此Simple Lua Classes

答案 1 :(得分:1)

SimpleClass:new()返回“props”表:此函数模仿创建“class”SimpleClass的新“实例”。因此,如果你这样做

p = SimpleClass:new()

然后p是由props表的new(self)函数创建的SimpleClass表实例:

print(p.name) 

将打印“yolo”。

重要的是要了解每次调用SimpleClass:new()时都会得到一个新表,SimpleClass:new()内部绑定到一个名为“props”的本地变量。但是你不能得到“SimpleClass中的props表”:propsSimpleClass.new(self)引用的表代表SimpleClass类的一个实例。 SimpleClass表没有名为props的表。