如何使用哈希除了数组值?或者如何创建哈希线?

时间:2013-11-20 13:04:58

标签: ruby arrays hash

尝试使用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放在一起。我试图从数组生成但也无法工作

3 个答案:

答案 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