Dies ist eine WoW (World of Warcraft) lua Skript Frage. Nicht viele von ihnen werden hier gefragt, aber ich habe keine Stelle, an die ich mich wenden kann, und Stackoverflow ist die Programmieroase für Antworten.Was ist mit PCALL oder ist Wowwiki falsch?
Frage:
Wowwiki besagt, dass die 2., 3., 4. Argumente Ihre Anruffunktionen 1. sind, 2., 3. Argumente. Ich finde das nicht wahr. Ich finde, dass das 3., 4., 5. Argument das 1., 2., 3. Argument ist.
-Link: http://www.wowwiki.com/API_pcall
Funktion:
function myTest(arg1)
return arg1 .. 10;
end
Problem:
local retOK, ret1 = pcall(myTest,"string value");
, wenn ich die Probe versuchen, erhalte ich einen Fehler von „versucht verketten auf lokale 'arg1' auszuführen (ein Nullwert) ". Wenn ich den Code zu:
local retOK, ret1 = pcall(myTest,"string value", "bob");
ändere, dann bekomme ich die Ausgabe von "bob10". Wohin geht das 2. Argument und wofür ist es?
Weitere Tests:
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
Ergebnisse: Versuch local 'arg1' (ein Nullwert)
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
Ergebnisse zu verketten: string value10
Ich bin neu in lua und ich kann nicht verstehen, warum diese anders sind.
Neue Frage:
Der folgende Code funktioniert, aber warum?
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
Was zwischen folgenden ist der Unterschied: (vs "" ":")
- Funktion BobsToolbox.Test1 (arg1)
- Funktion BobsToolbox: Test1 (arg1)
Ja, es sieht so aus, als ob Sie die Antwort gefunden haben! Wenn Sie die Funktion BobsToolbox: Test1 (arg1) erstellen, wird erwartet, dass das erste Argument nach dem Funktionsnamen mit pcall das zu bearbeitende Objekt ist. Das Argument danach ist das Argument, das Sie tatsächlich verwenden möchten. – Venesectrix
Ja, das scheint ungefähr richtig zu sein. – AKX