a = [1, 2, 3..9, 10, 15, 20..43]
print a.include?(5) # Returns false
我希望它返回true
,但3..9
未转换为[3,4,5,6,7,8,9]
。
我错过了一些愚蠢的东西,但我无法弄清楚。基本上我想用常规fixnums和范围初始化它。
答案 0 :(得分:7)
你必须把它甩掉
a = [1, 2, *3..9, 10, 15, 20..43]
a.include?(5) # => true
答案 1 :(得分:3)
如果你想要一个" lazier"不需要您将范围转换为数组元素的方法,请尝试使用===
(大小写相等)运算符。
a = [1, 2, 3..9, 10, 15, 20..43]
a.any? { |x| x === 5 }
我建议使用这种方法,因为它比将范围分割成单独的元素要有效得多。
答案 2 :(得分:1)
另一种解决方案,没有splat。
a = [1, 2, 3..9, 10, 15, 20..43]
a.any? {|i| i.kind_of?(Range) ? i.include?(5) : i == 5 }
# => true