Lua和3条要求“if”语句
我在摆弄一些我在某些论坛上找到的代码,但我只学过Java,所以我有点失去了我的元素。这里是我玩的片段:Lua和3条要求“if”语句
/run
function FnH()
for i=0,4 do
for j=1,GetContainerNumSlots(i) do
local t={GetItemInfo(GetContainerItemLink(i,j) or 0)}
if t[7]=="Herb" and select(2,GetContainerItemInfo(i,j))>=5 then
return i.." "..j, t[1]
end
end
end
end
这是使用WoW的插件API。用我知道的很少,这是一个搜索,并列出一个列表函数,列出允许t [7] = Herb,同时也有5个以上的项目。如果Lua做类似的数组,t [0]应该是Item Name。我想排除名称为“blahblah”的项目,但我不明白Lua的布尔操作数。
在Java中,这将是沿着
if(itemX.getItemType()=="Herb" && itemX.getAmount()>5 && itemX.getName()!="blahblah")
do stuff
else skip to next item
我和Lua看到,他们使用“与”和“或”线的东西,但我怎么说“而不是这个?”
如果Lua做类似的数组,t [0]应该是Item Name。
注意的Lua索引的表从指数1,而不是0像其他一些语言开始,所以如果你有表local t = {"John", "Laura", "Herb"}
,然后t[1] == "John"
和t[3] == "Herb"
。
正如其他人所说,等效Lua的操作and
,or
和not
,以写为~=
不平等,所以你的代码可以写为:
if itemX.getItemType() == "Herb"
and itemX.getAmount() > 5
and itemX.getName() ~= "blahblah" then
-- do stuff
else
-- skip to next item
end
你也可以改变最后条件为and not (itemX.getName()=="blahblah")
,因为它们是相同的。
而且,我不知道的关于WOW API,但这些itemX
调用应该(用:
符号代替.
符号注)可能是itemX:getItemType()
,itemX:getAmount()
等;见Lua编程中的OO-programming section。
我只是要你的Java代码直接转换到Lua,你可以看它是否对你有意义
if itemX.getItemType() == "Herb" and itemX.getItemAmount() > 5 and itemX.getItemName ~= "blahblah" then do
--do stuff here
end
else
--skip to the next item
end
不需要'do ... end'。 – lhf 2014-12-20 01:09:30
对我而言,这是一种习惯,但是,这不是必需的 – 2014-12-21 06:09:00
否定是'not'。不平等是'〜='。 – 2014-12-05 16:07:57
我会如何使用这些?在这种情况下,“不”与“和”在同一位置使用否定参数? 有了不等式,我假设只要两个比较数字不同,它就会返回true。 – formn 2014-12-05 16:25:35
'和','或','not'分别等同于类似C的语言(如Java)中的'&&','||'和'!'你几乎以完全相同的方式使用它们。 – 2014-12-05 16:27:54