Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Ruby中推送数组中的元素?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在Ruby中推送数组中的元素?

Ruby on rails 如何在Ruby中推送数组中的元素?,ruby-on-rails,ruby,Ruby On Rails,Ruby,这里有一个字符串数组,我想通过迭代每个字符串元素,将每个字符串转换为符号,并将每个符号推入名为symbols的数组,将其转换为符号数组 strings = ["A", "B", "C", "D", "E", "F", "G"] #array of strings symbols = [strings.each{ |x| "x".to_sym.push }] #array of symbols 我已经写了上面的代码,问题是推送元素。 请告诉我推送元素的正确方法。使用数组#映射: symbo

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

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

symbols = [strings.each{ |x| "x".to_sym.push }]  #array of symbols
我已经写了上面的代码,问题是推送元素。 请告诉我推送元素的正确方法。

使用数组#映射:

symbols = strings.map { |x| x.to_sym }  # array of symbols

您不需要推到这里,您需要
收集

 symbols = ["A", "B", "C", "D", "E", "F", "G"].collect{|x| x.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=[“A”、“B”、“C”、“D”、“E”、“F”、“G”]//字符串数组
symbols=Array.new
字符串。每个do | x|

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

symbols = array_of_strings.map(&:to_sym)
这就是您所需要的:

strings.map &:to_sym

这并不难,但我可以问一下原因吗?符号只是不可变的字符串……Ruby注释不是以
/
开头的,因此这些示例不起作用。另外,这是一个问题,只要看几秒钟的文档就可以解决这个问题。谁否决了这个问题,这是一个正确的答案。事实上,是的。现在。除了非ruby注释。啊,是的,你是正确的,没有注意到。你也可以这样使用
map
方法:
strings.map(&:to_-sym)
@AshishKumar,但前提是你是ruby 1.9.3或>。()虽然您的解决方案符合OP的要求,但它不是解决此问题的ruby方法。@samuil这是正确的,但请注意,一般认为,否决答案的唯一原因是a)如果它实际上没有解决问题,或者b)如果它是一种糟糕的编码实践。这个答案不是最好的方法,但我个人并不认为它是可怕的。代码是不正确的(因为原来的评论),我认为这是非常有害的红宝石新手,以轻松的方式处理简单的任务(不可怕,你是对的)。你可能是对的,它不应该被否决。对不起,我没有看到@Michaels的答案,我也有相同的代码,它可以工作。既然你先发布了,你就赢了:D。(我收回我的答案)