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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 不将零值分配给散列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有一个简短的手或最佳做法分配的东西到一个哈希,当它们在红宝石没有?例如,我的问题是,我正在使用另一个哈希建立这个,如果它的内容为零,它将分配给该密钥的零,而不是单独留下.我明白为什么会发生这种情况,所以我的解决办法是:
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(到位,如果你使用拒绝!)

猜你在找的Ruby相关文章