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
equalb
和c
equalb
这意味着a
equalc
,你不需要全部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
更好。