January 19, 2010

Как многолик он, этот case

Все уже давно привыкли, что в ruby можно делать такие вещи:

a, b = 10, 20

При этом переменной a присваивается значение 10, а b, соответственно, 20. Но когда мы хотим использовать оператор case в таком же ключе, он посылает нас подальше. Конструкция вида

a, b = case variable
when 10: 10, 20
when 20: 20, 10
end

работать не будет.

В группе ror2ru мне подсказали, как решить эту задачу:

a, b = case variable
when 10: [10, 20]
when 20: [20, 10]
end

То есть все наши значения нужно перечислять в массиве.