- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个 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’(零值)执行连接”的错误。如果我将代码更改为:
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”(零值)
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
结果:字符串值10
我是 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
以下有什么区别:("."vs ":")
最佳答案
Lua 文档:
http://www.lua.org/pil/16.html
self 参数的使用是任何面向对象语言的中心点。大多数 OO 语言都对程序员部分隐藏了这种机制,因此她不必声明此参数(尽管她仍然可以在方法中使用单词 self
或 this
). Lua 也可以隐藏这个参数,使用冒号运算符。我们可以将之前的方法定义重写为
function Account:withdraw (v)
self.balance = self.balance - v
end
方法调用为
a:withdraw(100.00)
冒号的作用是在方法定义中添加一个额外的隐藏参数,并在方法调用中添加一个额外的参数。冒号只是一种句法工具,尽管它很方便;这里没有什么新鲜事。我们可以用点语法定义一个函数并用冒号语法调用它,反之亦然,只要我们正确处理额外的参数:
Account = { balance=0,
withdraw = function (self, v)
self.balance = self.balance - v
end
}
function Account:deposit (v)
self.balance = self.balance + v
end
Account.deposit(Account, 200.00)
Account:withdraw(100.00)
可能的结论:
考虑到这一点,我假设当使用“pcall”调用“:”函数时,您必须提供“self”参数。
关于lua - PCALL 是怎么回事还是 Wowwiki 错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732607/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!