如何在不使用块的情况下在Ruby中计算"map"?

Syn*_*ted 10 ruby

我知道我可以用Ruby做到这一点:

  ['a', 'b'].map do |s| s.to_sym end
Run Code Online (Sandbox Code Playgroud)

得到这个:

  [:a, :b]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更简洁的方法,而不使用块.不幸的是,这不起作用:

  ['a', 'b'].map #to_sym
Run Code Online (Sandbox Code Playgroud)

我可以比初始代码更好吗?

Pre*_*ids 12

阅读一下Symbol#to_proc:

['a', 'b'].map(&:to_sym)
# or
['a', 'b'].map &:to_sym
# Either will result in [:a, :b]
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Ruby 1.8.7或更高版本,或者如果您使用的是Rails,则可以使用它 - ActiveSupport将为您添加此功能.


luc*_*tte 6

['a', 'b'].map(&:to_sym) 更短