ruby on rails - ¿Cómo verificar si una clave específica está presente en un hash o no?
ruby-on-rails data-structures (5)
Quiero comprobar si la clave "usuario" está presente o no en el hash de sesión. ¿Cómo puedo hacer esto?
Tenga en cuenta que no quiero comprobar si el valor de la clave es nulo o no. Solo quiero comprobar si la clave "usuario" está presente.
¿Siempre puedes usar la Hash#key?
para comprobar si la clave está presente en un hash o no.
Si no te lo devolverá false
hash = { one: 1, two:2 }
hash.key?(:one)
#=> true
hash.key?(:four)
#=> false
En las últimas versiones de Ruby, ¿la instancia de hash tiene una key?
método:
{a: 1}.key?(:a)
=> true
Asegúrese de usar la clave de símbolo o una clave de cadena según lo que tenga en su hash:
{''a'' => 2}.key?(:a)
=> false
Es muy tarde pero preferiblemente los símbolos deben usarse como clave:
my_hash = {}
my_hash[:my_key] = ''value''
my_hash.has_key?("my_key")
=> false
my_hash.has_key?("my_key".to_sym)
=> true
my_hash2 = {}
my_hash2[''my_key''] = ''value''
my_hash2.has_key?("my_key")
=> true
my_hash2.has_key?("my_key".to_sym)
=> false
Pero al crear un hash, si pasa una cadena como clave, buscará la cadena en las claves.
¿Pero cuando creas hash pasas el símbolo como clave y has_key? Buscará las teclas usando el símbolo.
Si está usando Rails, puede usar Hash#with_indifferent_access
para evitar esto; tanto el hash[:my_key]
como el hash["my_key"]
apuntarán al mismo registro
Mientras Hash#has_key?
hace el trabajo, como señala Matz here , ha sido desaprobado en favor de la Hash#key?
.
hash.key?(some_key)
¿La key?
Hash
key?
El método le dice si una clave dada está presente o no.
session.key?("user")