Как вычислить "карту" в Ruby без использования блоков?
Я знаю, что могу сделать это в Ruby:
['a', 'b'].map do |s| s.to_sym end
и получите следующее:
[:a, :b]
Я ищу более сжатый способ сделать это, не используя блок. К сожалению, это не работает:
['a', 'b'].map #to_sym
Могу ли я лучше, чем с исходным кодом?
Ответы
Ответ 1
Немного о Символ # to_proc:
['a', 'b'].map(&:to_sym)
# or
['a', 'b'].map &:to_sym
# Either will result in [:a, :b]
Это работает, если вы используете Ruby 1.8.7 или новее, или если вы используете Rails - ActiveSupport добавит эту функцию для вас.
Ответ 2
['a', 'b'].map(&:to_sym)
короче