循环内的Ruby变量范围

时间:2018-02-01 15:49:25

标签: ruby-on-rails ruby

我需要循环遍历别名哈希,并通过在Ruby类中为别名哈希值赋值来转换头数组。

我似乎无法转换标头数组,然后在循环后使其可用。

如何转换标头数组,以便在循环后可以使用?

 header = ["City", "State"]

 aliases = {"City"=>"Las Vegas", "State"=>"Nevada"}

 aliases.each do |k,v|
   header.each do |s|   
     if s == k then
       s = v            
     end
   end
 end

 puts header

1 个答案:

答案 0 :(得分:2)

试试这样:

header = ["City", "State"]

 aliases = {"City"=>"Las Vegas", "State"=>"Nevada"}

 aliases.each do |k,v|
   header.each do |s|   #doesn't see header variable
     if s == k 
      header[header.index(s)] = v            #doesn't see v variable
     end
   end
 end

 puts header

不知道我是否做对了,认为这是你正在寻找的。祝你好运!

编辑:我仍然会像这样简化:

header = ["City", "State"]

aliases = {"City"=>"Las Vegas", "State"=>"Nevada"}

header.each do |s|
  aliases.select{|k,v| k==s}.each do |k,v|
    header[header.index(s)] = v
  end
end
puts header