从switch语句获取控制变量

时间:2011-06-07 07:57:39

标签: ruby switch-statement

ruby​​中switch语句的基本语法是

case expression
  when condition1
    statements1
  when condition2
    statements2
  else
    statements
end

有没有办法在语句中获取控制表达式值?

意味着,是否存在一些存储表达式值的变量,可以直接使用 - 并且不需要在语句体中再次调用表达式?

3 个答案:

答案 0 :(得分:3)

没有神奇的变量。使用普通变量没有问题:

case a = expensive_method
  when condition1
    puts "#{a} meets condition 1"
  when condition2
    puts "#{a} meets condition 2"
end

答案 1 :(得分:0)

不,没有。但你可以这样做:

case var = expression
when condition1
  statements1
when condition2
  statements2 # use var whenever you like..
else
  statements
end

答案 2 :(得分:0)

直接用内联方式分配变量:

case result = expression
when condition1
  result + 1
when condition2
  result + 2
else
  result
end