Получение управляющей переменной из оператора switch - PullRequest
2 голосов
/ 07 июня 2011

базовый синтаксис оператора switch в ruby:

case expression
  when condition1
    statements1
  when condition2
    statements2
  else
    statements
end

Есть ли способ получить значение выражения управления в операторах?

Значит, есть какая-то переменная, которая хранит значение выражения, котороеможет использоваться напрямую - и выражение не нужно вызывать снова в теле операторов?

Ответы [ 3 ]

3 голосов
/ 07 июня 2011

Нет магической переменной. Нетрудно использовать обычную переменную:

case a = expensive_method
  when condition1
    puts "#{a} meets condition 1"
  when condition2
    puts "#{a} meets condition 2"
end
0 голосов
/ 07 июня 2011

Прямо назначить переменную самостоятельно:

case result = expression
when condition1
  result + 1
when condition2
  result + 2
else
  result
end
0 голосов
/ 07 июня 2011

Нет, нет. Но вы можете просто сделать это:

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