【问题标题】:Deleting NilClass values from hashes从哈希中删除 NilClass 值
【发布时间】:2016-01-06 15:06:25
【问题描述】:

我想从哈希中删除 NilClass 的值:

args = { 'name' => 'myname', 'description' => NilClass, 'homepage' => NilClass,
         'private' => NilClass, 'has_issues' => NilClass, 'has_wiki' => false,
         'has_downloads' => NilClass }

我尝试了以下方法:

args.reject!{|k,v| v.nil?}

这将返回所有值仍然存在的原始哈希。

【问题讨论】:

  • 这听起来像是一个 XY 问题。让我们先来看看它们是如何到达那里的。您正在解析某些内容并且缺少值并且哈希以 nils 结尾?如果是这样,最好处理第一个问题,这样你就没有 nil,而不是生成一堆 nil 值然后必须清理它们。

标签: ruby hash


【解决方案1】:

你的想法是对的,但是 Ruby 中 NilClass 的值不是 nil。自己试试?

NilClass.nil?
=> false

您必须明确拒绝等于 NilClass 的值。

args.reject! { |key, value| value == NilClass }

【讨论】:

  • 你可以使用_作为关键参数,因为你真的不关心它。
【解决方案2】:

您可以按照本文所述进行猴子修补并向哈希类添加紧凑方法。

Removing all empty elements from a hash / YAML?

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 2023-04-09
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2011-05-29
    • 2012-04-19
    相关资源
    最近更新 更多