ruby-on-rails - 在 if block 中更改和编辑哈希的键

标签 ruby-on-rails ruby if-statement hash

你好,我需要更改 if block 内哈希的键,并在每个循环中为每个键附加一些值我已经完成了,但它确实有效,但每次运行都会不断变化并返回不同的结果。

假设散列称为散列,我正在检查它是否有任何散列而不是更改它们的键值

我是这样的

    ...

    hash.each {|key,value|
        if hash[key].is_a?(Hash)
           hash[:"Match #{key}"] = hash[key]
           hash.delete(key)
           ....
           puts hash.keys
        end
 }

  ...

使用此代码段,第一次运行返回良好,但后续运行会混淆并给出很多重复的值,每次给出不同的结果。

就像运行 1 一样

       Match User gideon

假设我在提供的散列中有一个用户 gideon key 散列,它是正确的,但它是非常不可预测的

第二轮

             Match User gideon          
             Match Match User gideon
             Match Match Match User gideon
             Match Match Match Match User gideon
             Match Match Match Match Match User gideon
             Match Match Match Match Match Match User gideon

所以破坏一切 帮助表示赞赏

最佳答案

假设:

h = { :bacon=>"good", 3=>{:waffles=>"yum"}, :stack=>{"pancakes"=>"OK"} }

我假设您想将其转换为:

h = { :bacon=>"good", :"Match 3"=>{:waffles=>"yum"},
      :"Match stack"=>{"pancakes"=>"OK"} }

这是您可以做到这一点的一种方法:

h.keys.each { |k| (h[:"Match #{k}"] = h.delete(k)) if h[k].is_a? Hash }
h

此示例的灵感来自@muistooshort(又名 μ)的工作。

关于ruby-on-rails - 在 if block 中更改和编辑哈希的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165855/

相关文章:

ruby-on-rails - 如何从ElasticSearch模型索引中获取image.url

ruby-on-rails - 在循环运行时无法使用 ruby​​ on Rails 中的标签选择单选按钮?

ruby-on-rails - 在 Rails API token 身份验证中,www-Authenticate header 的领域 ="Application"部分是什么?

ruby-on-rails - 带有嵌套模块的 Object.const_set 中的常量名称错误

ruby-on-rails - 在 Rails 控制台中使用 fixture finder helpers

ruby-on-rails - 我如何在 Rails 的模型中获取 request.uri?

javascript - jQuery if 语句未捕获#ID

c++ - 为什么代码不断跳转到 return main();?

java - 解释代码(带有数组的 if 语句)

ruby-on-rails - Ruby 升级权限错误(Errno::EACCES)