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(到位,如果你使用拒绝!) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容