Поскольку ключевое слово when
в Ruby поддерживает список значений, разделенных запятыми, вы можете использовать оператор splat *
.Это, конечно, предполагает, что вы имеете в виду набор дискретных значений, которые находятся в массиве или могут стать им.
Оператор splat преобразует список аргументов в массив, как это часто встречается в
def method_missing(method, *args, &block)
Менее известен тот факт, что он также выполняет обратную операцию - превращение массива в список аргументов.
Так что в этом случае вы можете сделать что-то вроде
passing_grades = ['b','c']
case grade
when 'a'
puts 'great job!'
when *passing_grades
puts 'you passed'
else
puts 'you failed'
end