我在这样看过lua中的代码
if (a==b or false) then
Run Code Online (Sandbox Code Playgroud)
"或假"的目的是什么?
这是原始代码:
Function = function(self, aura, auraID)
-- Store the version.
-- aura.Version = 50000;
-- Fix texmode/glow.
aura.texmode = (aura.texmode == 1 or aura.texmode == true or false);
-- Texture source.
if(aura.owntex or aura.SourceType == PowaAuras.SourceTypes.Icon) then
aura.SourceType = PowaAuras.SourceTypes.Icon;
elseif(aura.wowtex or aura.SourceType == PowaAuras.SourceTypes.WoW) then
aura.SourceType = PowaAuras.SourceTypes.WoW;
elseif(aura.customtex or aura.SourceType == PowaAuras.SourceTypes.Custom) then
aura.SourceType = PowaAuras.SourceTypes.Custom;
elseif(aura.textaura or aura.SourceType == PowaAuras.SourceTypes.Text) then
aura.SourceType = PowaAuras.SourceTypes.Text;
else
aura.SourceType = PowaAuras.SourceTypes.Default;
end
end
Run Code Online (Sandbox Code Playgroud)
这是另一个例子
-- Iterate over element children.
visible, hidden = self:UpdateScrollList(key, level+1, visible, hidden,
(parentShowing == true and item:GetExpanded() or false));
Run Code Online (Sandbox Code Playgroud)
这看起来像是来自语法的行为:
a=b or false
Run Code Online (Sandbox Code Playgroud)
初始化a到的值b或者false如果b没有定义.
在if你写的声明中,我没有看到任何目的,因为在==之前评估or.如果他们使用括号来改变操作的顺序,那么它可以用于验证b已经定义的,例如:
> a=nil
> b=nil
> if (a == (b or false)) then print("yikes") else print("aok") end
aok
> if (a == b or false) then print("yikes") else print("aok") end
yikes
Run Code Online (Sandbox Code Playgroud)