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

ruby-on-rails – 不将零值分配给散列

发布时间:2020-12-16 19:50:47 所属栏目:百科 来源:网络整理
导读:有没有一个简短的手或最佳做法分配的东西到一个哈希,当它们在红宝石没有?例如,我的问题是,我正在使用另一个哈希建立这个,如果它的内容为零,它将分配给该密钥的零,而不是单独留下.我明白为什么会发生这种情况,所以我的解决办法是: hash1[:key] = hash2[:key
有没有一个简短的手或最佳做法分配的东西到一个哈希,当它们在红宝石没有?例如,我的问题是,我正在使用另一个哈希建立这个,如果它的内容为零,它将分配给该密钥的零,而不是单独留下.我明白为什么会发生这种情况,所以我的解决办法是:
hash1[:key] = hash2[:key] unless hash2[:key].nil?

因为我不能有一个值在哪里的关键实际上指向零. (我宁愿有一个空的哈希比{:key => nil},这不会发生)

我的问题是有更好的办法吗?我不想在作业结束时做一个delete_if.

解决方法

如果你否定“除非”的声明,稍微稍微一点
hash1[:key] = hash2[:key] if hash2[:key]   # same as   if ! hash2[:key].nil?

您也可以在&&& Michael或Marc-Andre在其他答案中提出的声明

这真的取决于你,你觉得对你而言最为可读.通过设计,Ruby中总是有多种方法来解决问题.

你也可以修改hash2:

hash1 = hash2.reject{|k,v| v.nil?}

hash2.reject!{|k,v| v.nil?}   # even shorter,if in-place editing of hash2

这将删除键/值对:key =>从哈希2(到位,如果你使用拒绝!)

(编辑:李大同)

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

    推荐文章
      热点阅读