estoy pasando por Programming Ruby - a pragmatic programmers guide y han tropezado en este pedazo de código:¿Cómo funciona el método de definición [corchete cuadrado] en Ruby?
class SongList
def [](key)
if key.kind_of?(Integer)
return @songs[key]
else
for i in [email protected]
return @songs[i] if key == @songs[i].name
end
end
return nil
end
end
No entiendo cómo definen [] funciona el método?
¿Por qué la clave está fuera de [], pero cuando se llama al método, está dentro de []?
¿Puede la clave estar sin paréntesis?
Soy consciente de que hay mucho mejores maneras de escribir esto, y saber cómo escribir mi propio método que funciona, pero este método [] simplemente me desconcierta ... Cualquier ayuda es muy apreciada, gracias
creo que la OP se pregunta por qué no podríamos llamarlo: 'my_array ("llave") []' en lugar y cómo my_array [ "clave"] podría trabajar posiblemente ... . –
entonces, por definición, cada vez que creo el método [] para alguna clase en ruby, sabe que se está utilizando en algún tipo de matriz y espera el parámetro (clave) que luego pone en []? – oFca
@oFca Si define un método llamado [], le permitirá llamar a '[" clave "]' en una instancia de esa clase. Un Array o Hash son dos ejemplos de donde Ruby usa esto internamente. – Gazler