Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 类和实例之间有什么区别?_Class_Lua_Instance - Fatal编程技术网

Class 类和实例之间有什么区别?

Class 类和实例之间有什么区别?,class,lua,instance,Class,Lua,Instance,lua中的类和实例有什么区别 我知道类类似于模板,实例是从模板创建的对象,但我想知道代码的区别是什么 我的目标是建立一个这样的系统 --class.widget.lua---------------------------------------------------------- local class = require "class" local widget = class("class.widget") function widget:create() --create

lua中的类和实例有什么区别

我知道类类似于模板,实例是从模板创建的对象,但我想知道代码的区别是什么

我的目标是建立一个这样的系统

--class.widget.lua----------------------------------------------------------

local class  = require "class"
local widget = class("class.widget")

function widget:create()
    --create variables here
end

function widget:update() 
    --update variables here
end

function widget:render()
    --widget render
end

return widget

--class.widget.button.lua---------------------------------------------------

local class  = require "class"
local widget = require "class.widget"
local button = class("button", widget)

function button:create(x, y)
    base:create()
    --create variables here
end

function button:update() 
    base:update()
    --update variables here
end

function button:render()
    base:render()
    --widget render
end

return button

--main.lua------------------------------------------------------------------

local button = require "class.widget.button.lua"
button1      = button(0, 0)
button2      = button(0, 16)

尽管这个问题还没有得到回答,但这个问题正是我所希望的

如果有人想用,我就把它贴在这里

编辑:这是一个更好的版本,我和任何一个寻找一个好的lua类

return function(name, base)
    local class = {}

    --private vars
    class.__name        = name 
    class.__base        = base
    class.__index       = class
    class.__event       = "create"

    --events
    class.onCreate      = function(inst) end
    class.onUpdate      = function(inst) end
    class.onRender      = function(inst) end
    class.onDelete      = function(inst) end

    --functions
    class.create        = function(inst) inst.__event = "create" inst:onCreate() end
    class.update        = function(inst) inst.__event = "update" inst:onUpdate() end
    class.render        = function(inst) inst.__event = "render" inst:onRender() end
    class.delete        = function(inst) inst.__event = "delete" inst:onDelete() end
    class.getBase       = function(inst) return inst.__base end
    class.getName       = function(inst) return inst.__name end
    class.inheritEvent  = function(inst)
        if inst.__event == "create" then inst.__base:create() end
        if inst.__event == "update" then inst.__base:update() end
        if inst.__event == "render" then inst.__base:render() end
        if inst.__event == "delete" then inst.__base:delete() end
      end

    --constructor
    local    MT  = {}
             MT.__index = base
    function MT:__call(_, ...)
        local    inst = setmetatable({}, class)
        inst:create(inst, ...)
        return inst
    end

    return setmetatable(class, MT)
 end

Lua没有类系统,所以区别在于。。。在Lua中,“类”通常只是这个类的所有实例所共有的一个元表,还有一个构造函数的附加字段
new
。这更像是一个要点而不是答案。