【发布时间】:2019-09-13 16:38:37
【问题描述】:
我正在关注这个例子OOP in Lua - Creating a class?:
local Class = {}
local Object = {}
Object.__index = Object
function Class.new(arg1)
print(require('app.utils').asString(arg1))
print(require('app.utils').asString(getmetatable(arg1)))
return setmetatable({}, Object)
end
setmetatable(Class, {__call = Class.new})
return Class
我只是在转储第一个参数,这就是我得到的
Class.new('123')
-- prints
123
{ ["__index"] = { ["reverse"] = function: builtin#82,["dump"] = function: builtin#85,["match"] = function: builtin#87,["rep"] = function: builtin#81,["len"] = function: 0x07b63050,["upper"] = function: builtin#84,["format"] = function: builtin#91,["find"] = function: builtin#86,["char"] = function: builtin#79,["sub"] = function: builtin#80,["gsub"] = function: builtin#90,["gmatch"] = function: builtin#89,["lower"] = function: builtin#83,["byte"] = function: builtin#78, } , }
Class:new('123')
{ ["new"] = function: 0x029dcd08, }
{ ["__call"] = function: 0x029dcd08, }
我感到困惑的是,当我使用getmetadata(arg1) 时,第一次使用 cass .new 时如何提供元数据。为什么论点在这里有元数据?是不是因为Class.new 中的第一个参数实际上是self?
【问题讨论】:
标签: lua