我想从then子句中访问case语句表达式,即
food = "cheese"
case food
when "dip" then "carrot sticks"
when "cheese" then "#{expr} crackers"
else
"mayo"
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,expr将是食物的当前值.在这种情况下,我知道,我可以简单地访问变量食物,但是可能存在值不再可访问的情况(array.shift等..).除了将expr移到局部变量然后访问它之外,还有一种方法可以直接访问案例expr的值吗?
罗亚
ps我知道这个具体的例子很简单,它只是一个例子.
#!/usr/bin/ruby1.8
a = [1, 2, 3]
case value = a.shift
when 1
puts "one (#{value})"
when 2
puts "two (#{value})"
end
# => one (1)
Run Code Online (Sandbox Code Playgroud)
怎么样:
food = "cheese"
x = case food
when "dip" then "carrot sticks"
when /(cheese|cream)/ then "#{ $1 } crackers"
else
"mayo"
end
puts x # => cheese crackers
Run Code Online (Sandbox Code Playgroud)