我有以下情况:
type = "stringX"
someArray = ["stringX", "string1", "string2"]
case type
when "stringA"
puts "a"
when "stringB"
puts "b"
when someArray.any? { |x| x.include?(type) }
puts "x"
when "stringC"
puts "c"
end
我所期望的是它将通过
case
方法,一旦它将.any?
方法评估为true(因为它本身确实评估为true),它将puts
“x”然而,这里并没有发生这种情况,它只是通过case
的其余部分到达raise
的下面某个地方。我在想这是怎么回事?
最佳答案
使用*
运算符
value = "stringX"
some_array = ["stringX", "string1", "string2"]
case type
when "stringA"
puts "a"
when "stringB"
puts "b"
when *some_array # notice the * before the variable name!
puts "x"
when "stringC"
puts "c"
end
这是怎么工作的?
when *some_array
检查value
是否是some_array
中的元素关于ruby - 。任何?在案例块内未按预期评估,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41341510/