我有哈希结构,如['a'=> false
,'b' => false
,'c' => false
,......]。
我的条件是:
但是,我写的代码没有ruby-ism。感觉就像编写java代码一样。 请帮助我做红宝石主义的方法。
答案 0 :(得分:0)
以下是显示从active_support中提取的两个哈希之间差异的代码。
# from https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/hash/diff.rb
def hash_diff(h1, h2)
h1.dup.delete_if { |k, v| h2[k] == v }.merge!(h2.dup.delete_if { |k, v| h1.has_key?(k) })
end
现在,您可以使用它来检测循环的每次迭代之间的差异:
previous ||= my_hash
diff = hash_diff(my_hash, previous)
puts "Difference: #{diff.inspect}" unless diff.keys.empty?
previous = my_hash
请注意,您可能必须为此代码使用互斥锁,以避免竞争条件和其他令人讨厌的错误。