这会产生一个无限循环,我不知道为什么会这样。当我不使用push命令时,循环就不会发生。
#strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
symbols = [ "a", "b", "c" ]
symbols.each do |x|
symbols.push(x.to_sym)
end
最佳答案
下面的代码将项追加到symbols
数组(同一个数组),同时对其进行迭代;块通过追加到数组来提供无限项。(each
将这些项用于迭代)
symbols.each do |x| symbols.push(x.to_sym) end
#^^^^^^ ^^^^^^^
使用
Enumerable#map
代替:symbols.map { |x| x.to_sym }
# => [:a, :b, :c]
symbols.map &:to_sym
# => [:a, :b, :c]
或者使用另一个数组而不是使用同一个数组。
new_symbols = []
symbols.each do |x| new_symbols.push(x.to_sym) end
new_symbols
# => [:a, :b, :c]
关于ruby - 尝试将字符串转换为符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21201589/