加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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隐式地将类型更改为字符串.

解决方法

有两件事发生了变化(后者是你的观察):

>现在订购哈希
> array.to_s用于返回array.join,现在返回array.inspect(参见1.8.7和1.9.2).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读