Есть ли способ узнать, какое значение «когда» было правильным при выборе нескольких вариантов в Ruby

#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. Хороший ответ, вероятно, опубликованный почти в то же время, что и принятый ответ.