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 の最初の 2 行は次のように変更されます。

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 に答える