#ruby #switch-statement
Вопрос:
Код:
case x
when 0
puts "You shall not pass!"
do_stuff
when 1..10
puts THE_VALUE_THAT TRIGGERED_THIS_BRANCH
do_other_stuff(THIS_VALUE)
end
Как вы можете понять из этого фрагмента кода, я хочу знать, есть ли способ получить значение «когда», которое было равно x. Я хочу уточнить, что вопрос не в том, как заставить этот конкретный код работать (например, с использованием if), а исключительно в целях получения знаний. Я заглянул в документ Ruby и не нашел способа реализовать это.
Комментарии:
1. Ценность по
x
-прежнему остается ценностьюx
.
Ответ №1:
Может быть, я здесь упрощаю, но я бы подумал, что вы могли бы это сделать:
case x
when 0
puts "You shall not pass!"
do_stuff
when 1..10
puts x
do_other_stuff(x)
end
Ответ №2:
case x
when 0
puts "You shall not pass!"
do_stuff
when 1..10
puts x
do_other_stuff(THIS_VALUE)
end
x-это значение, которое вызвало ветвление, поэтому вы можете просто использовать переменную x.
Комментарии:
1. Хороший ответ, вероятно, опубликованный почти в то же время, что и принятый ответ.