相关疑难解决方法(0)

我如何比较两个哈希?

我试图使用以下代码比较两个Ruby Hashes:

#!/usr/bin/env ruby

require "yaml"
require "active_support"

file1 = YAML::load(File.open('./en_20110207.yml'))
file2 = YAML::load(File.open('./locales/en.yml'))

arr = []

file1.select { |k,v|
  file2.select { |k2, v2|
    arr << "#{v2}" if "#{v}" != "#{v2}"
  }
}

puts arr
Run Code Online (Sandbox Code Playgroud)

屏幕输出是file2的完整文件.我知道文件不同的事实,但脚本似乎没有拿起它.

ruby hash

99
推荐指数
5
解决办法
9万
查看次数

比较红宝石的哈希

可能重复:
如何比较两个哈希值?

我有两个红宝石哈希(基本上是模型),我试图找到它们之间的差异,一个是对象的旧实例,另一个具有分配给某些属性的新值.我正在尝试确定哪些键已经更改,但似乎没有任何内置于Hash中的内容.我可以想到一些蛮力的解决方案,但想知道是否有一个优雅的解决方案.

理想情况下,我需要能够采用两个哈希:

element1 = {:name => "Original", :description => "The original one!"}
element2 = {:name => "Original", :description => "The new one!"}
Run Code Online (Sandbox Code Playgroud)

并能够比较/区分它们并得到像这样的东西:

{:description => "The new one!"}
Run Code Online (Sandbox Code Playgroud)

现在,我真正想到的是在一个哈希中迭代键并将该键的值与第二个哈希中的相应键进行比较,但这似乎太强暴了.

有任何想法吗?非常感谢!

ruby hash comparison

32
推荐指数
3
解决办法
3万
查看次数

标签 统计

hash ×2

ruby ×2

comparison ×1