Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
1.8.7和1.9.2中的Ruby哈希差异_Ruby - Fatal编程技术网

1.8.7和1.9.2中的Ruby哈希差异

1.8.7和1.9.2中的Ruby哈希差异,ruby,Ruby,给定以下脚本,我看到使用Ruby 1.8.7和Ruby 1.9.2的不同输出。我的问题是,在Ruby哈希中有什么改变强制了这种特殊的行为 def to_params(_hash) params = '' stack = [] _hash.each do |k, v| if v.is_a?(Hash) stack << [k,v] else #v = v.first if v.is_a?(Array) params &l

给定以下脚本,我看到使用Ruby 1.8.7和Ruby 1.9.2的不同输出。我的问题是,在Ruby哈希中有什么改变强制了这种特殊的行为

def to_params(_hash)
  params = ''
  stack = []

  _hash.each do |k, v|
    if v.is_a?(Hash)
      stack << [k,v]
    else
      #v = v.first if v.is_a?(Array)
      params << "#{k}=#{v}&"
    end
  end

  stack.each do |parent, hash|
    hash.each do |k, v|
      if v.is_a?(Hash)
        stack << ["#{parent}[#{k}]", v]
      else
        params << "#{parent}[#{k}]=#{v}&"
      end
    end
  end

  params.chop! # trailing &
  params
end

q = {"some_key"=>["some_val"], "another_key"=>["another_val"]}
n = convert_params(q)

puts n
def to_参数(_散列)
参数=“”
堆栈=[]
_hash.each do | k,v|
如果v.is_a?(散列)
stack两件事发生了变化(后者是您的观察结果):

  • 散列现在已排序
  • array.to_s
    用于返回
    array.join
    ,现在它返回
    array.inspect
    (请参阅和)

将元素添加到正在迭代的同一集合中看起来很危险。