1.8.7和1.9.2中的Ruby哈希差异
给定以下脚本,我看到使用Ruby 1.8.7和Ruby 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
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
(请参阅和)
将元素添加到正在迭代的同一集合中看起来很危险。