Там какой-либо путь состоит в том, чтобы получить доступ к выражению из рубинового оператора выбора?

Я хотел бы получить доступ к выражению операторов выбора из затем пункт т.е.

food = "cheese"
case food
when "dip" then "carrot sticks"
when "cheese" then "#{expr} crackers"
else
  "mayo"
end

где в этом случае expr был бы текущим значением еды. В этом случае я знаю, я мог просто получить доступ к переменной еде, однако могут быть случаи, где значение больше не доступно (array.shift и т.д.). Кроме выгоняния с квартиры expr в локальную переменную и затем доступ к нему, там способ прямого доступа к значению случаев expr?

Roja

p.s. Я знаю, что этот определенный пример тривиален его мучнистое сценарий в качестве примера.

5
задан Roja Buck 10 February 2010 в 17:09
поделиться

3 ответа

Как насчет:

food = "cheese"

x = case food
  when "dip" then "carrot sticks"
  when /(cheese|cream)/ then "#{ $1 } crackers"
else
  "mayo"
end

puts x  # => cheese crackers
3
ответ дан 13 December 2019 в 19:27
поделиться
#!/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)
9
ответ дан 13 December 2019 в 19:27
поделиться

Это грязно, но кажется, что это работает ...

food = "cheese"
case food
when ( choice = "dip" ): "carrot sticks"
when (choice = "cheese" ): "#{ choice } crackers"
else
  "mayo"
end
-1
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: