将方法应用于array / enumerable中的每个元素

这是我的数组

array = [:one,:two,:three] 

我想将to_s方法应用于所有的数组元素,以获得array = ['one','two','three']

我怎么能做到这一点(将枚举的每个元素转换为其他东西)?

4 Solutions collect form web for “将方法应用于array / enumerable中的每个元素”

这将工作:

 array.map!(&:to_s) 

值得注意的是,如果你有一个对象的数组,你想单独传入一个不同的调用方法,像这样:

 # erb <% strings = %w{ cat dog mouse rabbit } %> <% strings.each do |string| %> <%= t string %> <% end %> 

您可以使用method方法结合块扩展行为来简化:

 <%= strings.map(&method(:t)).join(' ') %> 

如果你不熟悉,用什么method封装与传递给它的符号相关联的方法并返回它。 &符将这个Proc扩展成一个块,它被很好地传递给mapmap的返回是一个数组,我们可能想更好地格式化它,因此join

需要注意的是,与Symbol#to_proc ,不能将parameter passing给helper方法。

你可以使用mapmap! 第一个将返回一个新的列表,第二个将在原地修改列表:

 >> array = [:one,:two,:three] => [:one, :two, :three] >> array.map{ |x| x.to_s } => ["one", "two", "three"] 
  • array.map!(&:to_s)将原始数组修改为['one','two','three']
  • array.map(&:to_s)返回数组['one','two','three']
  • 无法构buildgem原生扩展(安装Compass)
  • 这个Ruby代码中map(&:name)是做什么的?
  • 在Ruby中将数组输出到CSV
  • 有人可以清楚,简单地向我解释collection_select吗?
  • 检查ruby中的字符长度
  • OO在Rails中的devise:在哪里放东西
  • 在Rails中从一个gem重写一个模块方法
  • 查找heroku数据库大小最快的方法
  • tr和gsub有什么不同?
  • 在Ruby中unit testing受保护和私有方法的最佳方法是什么?
  • 从Linux上的命令队列并行处理(bash,python,ruby等等)