Преобразование набора - PullRequest
1 голос
/ 31 января 2011

У меня есть набор строк, которые я хочу универсально преобразовать, запустив функцию, например, add_underscore(string).

Есть ли собственный синтаксический способ сделать это без кода итерации?

Ответы [ 2 ]

4 голосов
/ 31 января 2011

Вы можете использовать map для применения функции к каждому элементу в коллекции.

>> a = [ "a", "b", "c", "d" ]
=> ["a", "b", "c", "d"]
>> a.map { |x| x.upcase }
=> ["A", "B", "C", "D"]
3 голосов
/ 31 января 2011

Опираясь на ответ MYYN ...

set = [ 'one', 'two', 'three', 'four' ]

# in Ruby 1.9 this:
set.map &:capitalize  # => [ 'One', 'Two', 'Three', 'Four' ]

# is the same as this:
set.map { |x| x.capitalize }

Обратите внимание, что map возвращает новый массив, он не изменяет существующий. Кроме того, он использует enumerable для итерации по каждому элементу в массиве; это все еще лучший способ сделать это, просто подумал, что тебе может быть интересно узнать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...