ruby是一种测试多个变量是否具有相同值的简单方法
在ruby中有没有一种简单的方法来测试几个变量是否具有相同的值 与此相关的东西:ruby是一种测试多个变量是否具有相同值的简单方法,ruby,syntax,Ruby,Syntax,在ruby中有没有一种简单的方法来测试几个变量是否具有相同的值 与此相关的东西: if a == b == c == d #does not work #Do something because a, b, c and d have the same value end 当然,可以对照一个主变量检查每个变量,看看它们是否都是真的,但这有点语法化,不太清楚 if a == b && a == c && a == d #does work #we ha
if a == b == c == d #does not work
#Do something because a, b, c and d have the same value
end
当然,可以对照一个主变量检查每个变量,看看它们是否都是真的,但这有点语法化,不太清楚
if a == b && a == c && a == d #does work
#we have now tested the same thing, but with more syntax.
end
另一个需要这样做的原因是,如果您在测试之前确实处理了每个变量
if array1.sort == array2.sort == array3.sort == array4.sort #does not work
#This is very clear and does not introduce unnecessary variables
end
#VS
tempClutter = array1.sort
if tempClutter == array2.sort && tempClutter == array3.sort && tempClutter == array4.sort #works
#this works, but introduces temporary variables that makes the code more unclear
end
将它们全部放入一个数组,看看是否只有一个唯一的项
if [a,b,c,d].uniq.length == 1
#I solve almost every problem by putting things into arrays
end
正如sawa在评论中指出的,一个?如果全部为假或为零,则失败。在他对以下内容的评论中提出了一种非常好的方法:
这是迄今为止我所见过的最简洁的表达方式。那么:
a = [1,1,1]
(a & a).size == 1 #=> true
a = [1,1,2]
(a & a).size == 1 #=> false
[a,b,c,d] == [b,c,d,a]
真的只是:
[a,b,c] == [b,c,d]
很好。这肯定是比使用临时变量更好的方法!请注意,如果它们是
nil
或false
,则不能使用one?
。洗牌无效,它可能会以相同的顺序结束。@Pitri您知道[1,1,2]。洗牌
有时返回[1,1,2]
,不是吗?;-)是的,你部分是对的;所以删除了。但是shuffle
总是这样,但是当出现重复项时,它将失败。:)我也喜欢这个解决方案,但是没有模块扩展,它比Shawn的答案更冗长。
[b, c, d].all?(&a.method(:==))
[b, c, d].all?(&a.method(:==))