これは WoW (World of Warcraft) の lua スクリプトに関する質問です。これらの多くはここで尋ねられることはありませんが、私にはどこに頼るべきかがなく、Stackoverflow は答えを求めるプログラマーのオアシスです。
質問:
Wowwiki は、2 番目、3 番目、4 番目の引数が呼び出し関数の 1 番目、2 番目、3 番目の引数であると述べています。私はこれが真実だとは思いません。3 番目、4 番目、5 番目の引数は、1 番目、2 番目、3 番目の引数になってしまうことがわかりました。
リンク: http://www.wowwiki.com/API_pcall
関数:
function myTest(arg1)
return arg1 .. 10;
end
問題:
local retOK, ret1 = pcall(myTest,"string value");
サンプルを試すと、「ローカル 'arg1' (nil 値) で連結を実行しようとしています」というエラーが表示されます。コードを次のように変更すると:
local retOK, ret1 = pcall(myTest,"string value", "bob");
次に、「bob10」の出力を取得します。2 番目の引数はどこに行き、何のために使用されますか?
より多くのテスト:
function BobsToolbox:RunTest()
local test1, value1 = pcall(BobsToolbox.Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function BobsToolbox:Test1(arg1)
return arg1 .. "10";
end
結果: ローカル 'arg1' (nil 値) の連結を試みます
function BobsToolbox:RunTest()
local test1, value1 = pcall(Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function Test1(arg1)
return arg1 .. "10";
end
結果: 文字列 value10
私は lua が初めてで、なぜこれらが異なるのか理解できません。
新しい質問:
次のコードは機能しますが、なぜですか?
function BobsToolbox:RunTest()
local test1, value1 = pcall(BobsToolbox.Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function BobsToolbox.Test1(arg1)
return arg1 .. "10";
end
次の違いは何ですか: ("." と ":")
- 関数 BobsToolbox.Test1(arg1)
- 関数 BobsToolbox:Test1(arg1)