我正在使用 Ruby on Rails 3.0.10,我想以有条件的方式构建哈希键\值对。也就是说,如果条件匹配,我想添加一个键及其相关值:
hash = {
:key1 => value1,
:key2 => value2, # This key2\value2 pair should be added only 'if condition' is 'true'
:key3 => value3,
...
}
我怎样才能做到这一点并保持代码的“良好”可读性?我是否“被迫”使用 merge
方法?
最佳答案
我更喜欢 tap
,因为我认为它提供了比这里描述的解决方案更清晰的解决方案,因为它不需要对元素进行任何 hacky 删除,并且明确定义了构建哈希的范围。
这也意味着您不需要声明不必要的局部变量,这是我一直讨厌的。
如果您以前没有遇到过,tap
非常简单 - 它是 Object
上的一个方法,它接受一个 block 并始终返回它被调用的对象在。因此,要有条件地构建哈希,您可以这样做:
Hash.new.tap do |my_hash|
my_hash[:x] = 1 if condition_1
my_hash[:y] = 2 if condition_2
...
end
tap
有很多有趣的用途,这只是一个。
关于ruby - 以有条件的方式构建哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7328647/