¿cuál es la mejor manera de hacer tal verificación profunda:rubí Hash incluir otro picadillo, Cheque profunda
{:a => 1, :b => {:c => 2, :f => 3, :d => 4}}.include?({:b => {:c => 2, :f => 3}}) #=> true
gracias
¿cuál es la mejor manera de hacer tal verificación profunda:rubí Hash incluir otro picadillo, Cheque profunda
{:a => 1, :b => {:c => 2, :f => 3, :d => 4}}.include?({:b => {:c => 2, :f => 3}}) #=> true
gracias
que creo que lo que quiere decir que a partir de un ejemplo (de alguna manera). Verificamos si cada clave en el subhash está en el superhash, y luego verificamos si los valores correspondientes de estas teclas coinciden de alguna manera: si los valores son hashes, realice otra comprobación profunda; de lo contrario, verifique si los valores son iguales:
class Hash
def deep_include?(sub_hash)
sub_hash.keys.all? do |key|
self.has_key?(key) && if sub_hash[key].is_a?(Hash)
self[key].is_a?(Hash) && self[key].deep_include?(sub_hash[key])
else
self[key] == sub_hash[key]
end
end
end
end
Se puede ver cómo funciona esto porque la declaración if
devuelve un valor: la última declaración evaluado (yo no utilizar el operador condicional ternario porque eso haría que hasta aquí más feo y más difícil de leer).
sí, gracias! ... –
I como éste:
class Hash
def include_hash?(other)
other.all? do |other_key_value|
any? { |own_key_value| own_key_value == other_key_value }
end
end
end
No está claro lo que realmente las que solicita el código para hacerlo. ¿Desea verificar si el hash tiene un valor que es un hash incluyendo la clave: c con valor 2 y clave: f con valor 3? ¿Desea verificar que el valor hash para la tecla b: es un hash que incluye la clave: c con el valor 2 y la clave: f con el valor 3? ¿O desea verificar que el valor hash para la tecla b es exactamente la clave hash: c con valor 2 y la clave: f con valor 3? Por favor explique exactamente lo que quiere, preferiblemente con algunos ejemplos que devuelvan verdadero, y algunos que devuelvan falso. – SamStephens