Ruby 有条件比较三个值

Ruby 有条件比较三个值,ruby,if-statement,Ruby,If Statement,我试图确定是否有一种方法可以让我编写一个if语句,如果三个值彼此相等,则该语句将导致true 例: 如果a==b==c “真的” 结束 不必写: 如果a==b&&a==c&&b==c 如果aequalb和cequalb这意味着aequalc,你不需要全部3个 如果需要更具可扩展性的3+参数,可以执行以下操作: Set[a,b,c].size==1 最初的答复是: Set[a,b,c]。一个? 但是它one?不计算nil或false元素。所以设置[nil,nil]。一个?将是false 感

我试图确定是否有一种方法可以让我编写一个
if
语句,如果三个值彼此相等,则该语句将导致
true

例:

如果a==b==c
“真的”
结束
不必写:

如果a==b&&a==c&&b==c

如果
a
equal
b
c
equal
b
这意味着
a
equal
c
,你不需要全部3个

如果需要更具可扩展性的3+参数,可以执行以下操作:

Set[a,b,c].size==1

最初的答复是:

Set[a,b,c]。一个?
但是它
one?
不计算
nil
false
元素。所以
设置[nil,nil]。一个?
将是
false


感谢萨加尔·潘迪亚在评论中指出了这一点。

正如@bodicious所提到的
a==b&&b==c
由于传递属性,将起作用

但是,如果您有许多项目,您可以执行以下操作:

values = [a, b, c]
if values.all? { |value| value == value[0] }
  puts "true"
end
如果块对每个项都返回true,则该方法将返回true。因此,在该块中,检查每个项目是否等于第一个项目。

这是怎么回事

[a,b,c].uniq.size==1

您只需要
a==b&&b==c
。然后暗示
a==c
。如果您有一个nil或false对象数组,该怎么办?它将按预期工作。也就是说,如果您想检查(伪代码)
nil==nil
false==false==false
这两个都将是
true
设置[nil,nil,nil]。一个?#=>错误
。我不认为
one?
做了你期望它做的事。哈!很好,
设置[nil,nil]。大小==1
更好。