Ruby哈希差异在1.8.7和1.9.2
发布时间:2020-12-17 03:27:37 所属栏目:百科 来源:网络整理
导读:给定以下脚本,我看到使用 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)
给定以下脚本,我看到使用
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 > Ruby 1.8.7输出: some_key = some_val&安培; another_key = another_val > Ruby 1.9.2输出: some_key = [ “some_val”]&安培; another_key = [ “another_val”] 1.9.2保留值的“数组”类型,而1.8.7隐式地将类型更改为字符串. 解决方法
有两件事发生了变化(后者是你的观察):
>现在订购哈希 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |