2

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))

この関数は「ストック」Luaには存在しないことを認識してclass()います。これは、TI-NspireLuaの実装で使用できる関数です。その定義と使用法はここにあります。

4

1 に答える 1

6

obj:methodname(args)砂糖ですobj.methodname(obj,args)。したがって、構文を使用する場合は、をitem[action](unpack(arguments))使用する必要がありますitem[action](item,unpack(arguments))item:activate(unpack(arguments))それ以外の場合は、メソッドを明示的に使用できるかどうかを試してください。

于 2011-09-08T18:56:54.303 に答える