クラスを呼び出そうとしているときのエラー:ローカル「自己」(nil値)のインデックスを付けようとする - lua
-
28-10-2019 - |
質問
Ti-nspire計算機で実行されるLUAスクリプトを作成しています。問題は、スクリプトを実行しているときにエラーが発生したことです Attempt to index local 'self' (a nil value)
いつ button:activate()
メソッドが呼び出されます。パーサーは、エラーは以下のコードの8行目にあると言います。問題のあるコードは次のとおりです。
button = class(view)
function button:init()
self.selected = false
end
function button:activate()
self.selected = true
end
私はこのようなアクティブ化関数を呼び出します:
item = button()
local action = "activate"
local arguments = {}
item[action](unpack(arguments))
私は知っています class()
「ストック」LUAには関数が存在しません。これは、Ti-nspire Luaの実装で利用可能な関数です。その定義と使用法を見つけることができます ここ.
解決
obj:methodname(args)
砂糖です obj.methodname(obj,args)
. 。したがって、構文を使用する場合 item[action](unpack(arguments))
, 、使用する必要があります item[action](item,unpack(arguments))
. 。それ以外の場合は、試してみてください item:activate(unpack(arguments))
メソッドを明示的に使用できる場合。
所属していません StackOverflow