Как вычислить "карту" в 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) короче