Поддерживает ли ruby ​​диапазоны в выражении case? - PullRequest
40 голосов
/ 09 ноября 2010

Я хочу сделать это:

case cost

    when cost between 1 and 3 then cost * 1.1
    when cost between 3 and 5 then cost * 1.2
else
    0

Ответы [ 2 ]

60 голосов
/ 09 ноября 2010

Да, поскольку Range#=== определено так же, как include?, вы можете использовать диапазоны в операторах case:

case cost
when 1..3 then cost * 1.1
when 3..5 then cost * 1.2
4 голосов
/ 09 ноября 2010

Да. Я не знаю, почему вы не подумали об этом в Google или просто не попробовали это (в этом и заключается прелесть Ruby, IMO: обычно все работает так, как вы думаете), но я отвечу точно так же: http://ilikestuffblog.com/2008/04/15/how-to-write-case-switch-statements-in-ruby/

В частности:

case expression
when min..max
   statements
else
   statements
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...