在Lua中从类中获取表格。

快速问题,我该如何从 SimpleClass 变量中获取名为 props 的表格?

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

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

-- 在这里从 SimpleClass 中获取 props 

-- 我的尝试
local propsFromSimpleClass = getmetatable(SimpleClass)-- 显然行不通
点赞
用户184600
用户184600

我认为你有点自欺欺人。

尝试使用这个方法

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

2013-12-23 05:49:16
用户869951
用户869951
`SimpleClass:new()` 返回一个 "props" 表:该函数模拟创建“SimpleClass”类的新“实例”。因此,如果您执行

p = SimpleClass:new()


那么 `p` 就是由 `SimpleClass` 表的 `new(self)` 函数创建的 `props` 表实例:

print(p.name)


将打印“yolo”。

重要的是要理解,每当调用 `SimpleClass:new()` 时,您都会获得一个新的表格,该表格在 `SimpleClass:new()` 中绑定到名为 "props" 的局部变量。但是您无法从 `SimpleClass` 中获取“props表格”:在 `SimpleClass.new(self)` 中由 `props` 引用的表格表示 `SimpleClass` 类的实例。`SimpleClass` 表中没有称为“props”的表格。 
2013-12-23 16:42:33