2

有一个字符串数组,我想通过迭代每个字符串元素并将每个字符串转换为符号并将每个符号推入​​一个名为符号的数组来将其转换为符号数组。

strings = ["A", "B", "C", "D", "E", "F", "G"]  #array of strings

symbols = [strings.each{ |x| "x".to_sym.push }]  #array of symbols

我已经编写了上面的代码,问题在于推送元素。请告诉我推元素的正确方法。

4

5 回答 5

6

使用 Array#map 代替:

symbols = strings.map { |x| x.to_sym }  # array of symbols
于 2013-01-21T15:59:39.217 回答
2

你不需要在这里推送,你需要collect.

 symbols = ["A", "B", "C", "D", "E", "F", "G"].collect{|x| x.to_sym}

这将完成你想要的。

于 2013-01-21T15:59:47.280 回答
2

就像建议的一些海报一样,您可以Array#map用于此目的。由于您想要简单的转换,您甚至可以使用to_proc符号来简洁:

symbols = array_of_strings.map(&:to_sym)
于 2013-01-21T16:01:29.467 回答
1

我认为这是您正在寻找的代码块:

strings = ["A", "B", "C", "D", "E", "F", "G"]  //array of strings
symbols = Array.new

strings.each do |x|
    symbols << x.to_sym
end
于 2013-01-21T16:01:10.460 回答
0

这就是你所需要的:

strings.map &:to_sym
于 2013-01-21T16:49:29.017 回答