【问题标题】:Lua class member function calling for each otherLua类成员函数相互调用
【发布时间】:2016-10-18 23:36:07
【问题描述】:

我有以下 Lua 类:

-- file: myClass.lua
local myClass = {}
myClass.__index = myClass

setmetatable(myClass, {
    __call = function (cls, ...)
        return cls.new(...)
    end,
})

function myClass.new(init_size)
    local self = setmetatable({}, myClass)
    self.max_size = init_size
    return self
end

function myClass:set_max_size(x)
    self.max_size = x
    print(myClass:get_max_size()) -- <= [1]
end

function myClass:get_max_size()
    return self.max_size
end

return myClass

在终端中,执行以下命令后,输出不是我所期望的。

> myClass = require 'myClass'
> myClassObj = myClass(5)
> myClassObj:set_max_size(10) ---<== this line will print nil instead of 10 as expected.

有什么想法吗?

【问题讨论】:

    标签: lua torch


    【解决方案1】:

    由于max_size 不是作为类变量实现的,而是作为实例的属性(或您可能在 Lua 上下文中使用的任何术语)实现的,所以您需要

    self:get_max_size()
    

    而不是

    myClass:get_max_size()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2020-12-04
      • 2021-10-04
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多