这是一个 WoW(魔兽世界)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”的输出。第二个论点在哪里,它是为了什么?
更多测试:
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)