use*_*882 20 ruby methods hash ruby-on-rails ruby-on-rails-3
我正在使用Ruby on Rails 3.1.0,我想检查散列是否"完全"包含在另一个散列中并返回一个布尔值.
说我有那些哈希:
hash1 = {
:key1 => 'value1',
:key2 => 'value2',
:key3 => 'value3'
}
hash2 = {
:key1 => 'value1',
:key2 => 'value2',
:key3 => 'value3',
:key4 => 'value4',
:key5 => 'value5',
...
}
Run Code Online (Sandbox Code Playgroud)
我想检查是否hash1包含在hash2即使hash2有更多的值hash1(在上面的情况下,我正在寻找的响应应该是true)?是否可以通过使用"一个唯一的代码行"\"一个Ruby方法"来做到这一点?
更优雅的方法是在一个哈希合并另一个哈希时检查相等性。
例如重写Hash include?为此的实例方法。
class Hash
def include?(other)
self.merge(other) == self
end
end
{:a => 1, :b => 2, :c => 3}.include? :a => 1, :b => 2 # => true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6232 次 |
| 最近记录: |