【问题标题】:Ruby: A neat way to find the number of non nil records from a Hashie::MashRuby:一种从 Hashie::Mash 中查找非 nil 记录数的简洁方法
【发布时间】:2014-11-24 17:05:00
【问题描述】:

我正在使用 EJ Holme 相当出色的 restforce gem 来与我的 salesforce 实例对话。

它正在为客户记录返回一个 hashie mash。我想做一些内置方法,但我卡住了。

哈希返回大约 550 个数组对值。例如Restforce_hash.last 会返回类似:

["field_title", "field_content">]

到目前为止一切都很好,我想在顶部放置一个摘要框,显示用于记录的字段数的指标。

如果我打电话给Restforce_hash.length,我会得到返回的总数。

但是我真正想要的是数组中第二项的记录对数(即..“field_content”not nil。

我希望有一些很棒的简洁的单行 ruby​​ 方法,例如:

Restforce_hash.not_nil.length

但我不只是乐于追踪某些东西......有没有办法或者我必须遍历哈希并计算!= nil 记录的数量?

【问题讨论】:

    标签: ruby ruby-on-rails-4 salesforce null


    【解决方案1】:

    试试这个:

    restforce_hash.count { |key, val| !val.nil? }
    

    【讨论】:

    • 非常感谢您!我需要读一下你在那里做了什么。我应该在文档中查找哪些术语?我看到你已经在哈希和管道中有一个迭代器的内置方法。 {} 中的代码表示什么?
    • @Huw {} 中的代码称为块 - rubylearning.com/satishtalim/ruby_blocks.html
    • 谢谢,这是一个很好的开始!
    【解决方案2】:
    Restforce_hash.select{|key,value| value.present? }  
    

    将在排除所有 NIL + 空白元素后返回所有元素。 如果

         Restforce_hash={:a=> "sss", :b=>"cvcxc",:c=>"",:f=>nil}
    

    然后

        Restforce_hash.select{|key,value| value.present? } 
    

    会回来

    {:a=>"sss", :b=>"cvcxc"}
    

    【讨论】:

      【解决方案3】:

      如果您想知道哈希中有多少个 nil 值,只需使用:

      hash = {a:1, b:nil, c:2}
      hash.values.count{ |v| !v } # => 1
      

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多