0

寻求一些有关从 Corona OOP 类外部访问变量的帮助。这是基本代码:

module(..., package.seeall)

local widget = require "widget"

picker = {}
picker.__index = picker

function picker.new()
local picker_object = {}
setmetatable(picker_object,picker)

picker_object.theHour = 12
picker_object.theMin = 0
picker_object.am = true

return picker_object
end

function picker:getHour()
return self.theHour
end

function picker:getMin()
return self.theMin
end

当我尝试从课堂外调用 getHour 和 getMin 时,self 以 nil 的形式返回。我应该使用什么语法来返回我的 theHour 和 theMin 变量?谢谢!!

4

1 回答 1

0

我试过你的代码,没有任何问题。问题可能出在您访问此模块的方式上。这是与您的代码一起使用的 main.lua(我猜您的文件名为 picker.lua):

local picker = require "picker"
local picker_obj = picker.picker.new() 
                -- the first picker is the module (picker.lua)
                       -- the second is the picker class in the file
print("minute: " .. picker_obj:getMin())
print("hour: " .. picker_obj:getHour())

此外, module(..., package.seeall) 命令已被弃用,请参阅此博客文章了解制作模块的更好方法。如果你使用这个方法来创建你的模块并且仍然调用你的文件 picker.lua,我的 main.lua 中的前两行会变成:

local picker = require "picker"
local picker_obj = picker.new()

这是我修改代码以使用创建模块的新方法的最简单方法。只有开始和结束改变,其他一切都保持不变:

-- got rid of module(), made picker local
local picker = {}
picker.__index = picker

... -- all the functions stay the same

return picker
于 2012-07-07T22:47:05.823 回答