我有以下情况:

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/

10-13 03:40