Рубин: Сокращение для [1] ||а [3] ||а [6] ...? - PullRequest
1 голос
/ 03 августа 2010

У меня есть регулярное выражение, которое возвращает несколько переменных в совпадении. Меня интересует первая ненулевая переменная в подмножестве индексов в матче, поэтому я использую

result = a[1] || a[3] || a[6] || ...

Я хотел бы сохранить соответствующие индексы в файле конфигурации вместе с самим регулярным выражением. Какова лучшая стенограмма, которая не запутывает смысл?

Ответы [ 2 ]

3 голосов
/ 03 августа 2010

Другой способ:

result = [1,3,6].find {|x| a[x]}
2 голосов
/ 03 августа 2010

Используйте values_at, чтобы получить массив, который содержит только элементы с указанными индексами. Затем используйте find {|x| x}, чтобы получить первый элемент, который не равен nil или false.

result = a.values_at(*indices).find {|x| x}
...