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

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

然而,超过两个值之间的相等性不工作。

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

我该如何在Lua中检查超过2个值是否相等?

点赞
用户10953006
用户10953006

你应该每次比较两个值:

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
2021-07-28 02:51:12