Class 从Lua的一个班级得到一张桌子

Class 从Lua的一个班级得到一张桌子,class,lua,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 Simpl

快速提问,如何从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

我觉得你有点误导自己

试试这种方法

simple_class.lua

SimpleClass = {}
SimpleClass.__index = SimpleClass

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

local instance = SimpleClass:new()

print(instance.name)
-- yolo
示例.lua

SimpleClass = {}
SimpleClass.__index = SimpleClass

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

local instance = SimpleClass:new()

print(instance.name)
-- yolo

要获得更多帮助,我可以从Lua users wiki中查看它。SimpleClass:new()返回一个“props”表:该函数模拟创建“class”SimpleClass的新“实例”。因此,如果你这样做

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

print(p.name) 
将打印“yolo”


必须了解,每次调用
SimpleClass:new()
时,都会得到一个新表,该表在
SimpleClass:new()中绑定到一个名为“props”的本地变量。但是您无法从SimpleClass中获取“props表”:在
SimpleClass中由
props
引用的表。new(self)
表示SimpleClass类的一个实例。
SimpleClass
表没有名为props的表

我已经做了几次失败的尝试,但我仍将发布它以满足您的条件。
local propsFromSimpleClass=SimpleClass:new()