У мене є масив Ruby, що містить деякі рядкові значення. Мені потрібно:
- Знайдіть усі елементи, які відповідають якомусь присудку
- Запустіть відповідні елементи за допомогою перетворення
- Повернути результати як масив
Зараз моє рішення виглядає так:
def example
matchingLines = @lines.select{ |line| ... }
results = matchingLines.map{ |line| ... }
return results.uniq.sort
end
Чи існує метод Array або Enumerable, який поєднує в собі вибір та відображення в єдине логічне твердження?
Enumerable#grep
Метод робить саме те , що було запропоновано і вже в Рубіні протягом більше десяти років. Він приймає аргумент предиката та блок перетворення. @hirolau дає єдину правильну відповідь на це питання.
filter_map
з цією метою. Більше інформації тут .