尝试使用Hash,但代码中包含许多值
H1 = Hash [:state => 1,code => 2]
H2 = Hash [:state => 10,code => 20]
这项工作:
H1.except(:state, :code)
哈希 - > H1不包含值。行
但是波纹管不起作用
H1.expect(H2.keys)
哈希 - > H1将包含值。不是
问题是因为ruby将order.keys与BRACKET放在一起。我试图从数组生成但也无法工作
答案 0 :(得分:6)
您正在做的事情等于致电H1.except([:state, :code])
。
如果H1.except(:state, :code)
有效,只需取消对阵列的取消:
H1.except(*H2.keys)
答案 1 :(得分:2)
您可以使用lambda:
在单行中执行此操作h1 = {:state => 1, :code => 2, :foo => 3, :bar => 4}
h2 = {:state =>10, :code => 20}
h1.select {|k,v| !h2.keys.include?(k)}
产量
{:foo=>3, :bar=>4}
答案 2 :(得分:1)
您可以做的解决方法是:
H2.keys.each do |key|
H1.except(key)
end