クラスを呼び出そうとしているときのエラー:ローカル「自己」(nil値)のインデックスを付けようとする - lua

StackOverflow https://stackoverflow.com/questions/7353035

  •  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)) メソッドを明示的に使用できる場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top