你能检查在Ruby on Rails中同一行上的多个值是否相同吗?

6

基本上,我正在尝试检查6个值是否相同。 我尝试将它们串起来:

if val1 == val2 == val3 == val4 == val5 == val6
  #...
end

但是这个会出错。有没有其他的方法可以实现呢? 谢谢。
3个回答

11

试一试:

if [val1, val2, val3, val4, val5, val6].uniq.count == 1
  #...
end

如果你想要更加花哨一些,你可以尝试这个方法。

unless [val2, val3, val4, val5, val6].find{ |x| x != val1 }
  # ...
end

一旦找到一个与val1不相等的元素,上述过程将停止,否则将执行该块。


2

一种可爱的方式:

[val1,val2,val3,valN].uniq.size == 1

一种更加通俗易懂的方式:
[val2,val3,valN].all?{ |x| x == val1 }

2

如果值恰好为Fixnum类型,那么这个性感的代码行将起作用:

if val1 == val2 & val3 & val4 & val5 & val6
  # ...
end

如果没有特别要求,这个“胖子”就可以适用于任何类型。
if [val1] == [val2] & [val3] & [val4] & [val5] & [val6]
   # ...
end

为了你未来的自己和其他开发人员,请不要使用这种结构。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接