有一个字符串数组,我想通过迭代每个字符串元素并将每个字符串转换为符号并将每个符号推入一个名为符号的数组来将其转换为符号数组。
strings = ["A", "B", "C", "D", "E", "F", "G"] #array of strings
symbols = [strings.each{ |x| "x".to_sym.push }] #array of symbols
我已经编写了上面的代码,问题在于推送元素。请告诉我推元素的正确方法。
有一个字符串数组,我想通过迭代每个字符串元素并将每个字符串转换为符号并将每个符号推入一个名为符号的数组来将其转换为符号数组。
strings = ["A", "B", "C", "D", "E", "F", "G"] #array of strings
symbols = [strings.each{ |x| "x".to_sym.push }] #array of symbols
我已经编写了上面的代码,问题在于推送元素。请告诉我推元素的正确方法。
使用 Array#map 代替:
symbols = strings.map { |x| x.to_sym } # array of symbols
你不需要在这里推送,你需要collect
.
symbols = ["A", "B", "C", "D", "E", "F", "G"].collect{|x| x.to_sym}
这将完成你想要的。
就像建议的一些海报一样,您可以Array#map
用于此目的。由于您想要简单的转换,您甚至可以使用to_proc
符号来简洁:
symbols = array_of_strings.map(&:to_sym)
我认为这是您正在寻找的代码块:
strings = ["A", "B", "C", "D", "E", "F", "G"] //array of strings
symbols = Array.new
strings.each do |x|
symbols << x.to_sym
end
这就是你所需要的:
strings.map &:to_sym