检查 Lua 中超过 2 个值之间的相等性

Check for equality between more than 2 values in Lua

在 Lua 5.3.3 中,两个值之间的等式使用 == 运算符正常工作。

但是,两个以上的值之间的相等性不起作用。

> print(1 == 1 == 1)
false
>

如何检查 Lua 中是否有 2 个以上的值彼此相等?

您应该一次比较 2 个值:

print((1 == 1) and (1 == 1))

如果你有特殊需求,如果这种方式不能接受,那么你也可以写一个专门的函数:

function EqualsAll (Values, Number)
  local Equals = true
  local Index  = 1

  while (Equals and (Index <= #Values)) do
    if Values[Index] == Number then
      Index = Index + 1
    else
      Equals = false
    end
  end

  return Equals
end

您可以按如下方式使用它:

> EqualsAll({1, 2, 3}, 1)
false
> EqualsAll({1, 1, 1}, 1)
true