sto attraversando Programming Ruby - a pragmatic programmers guide e sono imbattuti in questo pezzo di codice:Come funziona la definizione del metodo [parentesi quadra] in 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
io non capisco come definiscono [] lavori di metodo?
Perché la chiave è all'esterno [], ma quando viene chiamato il metodo, è all'interno []?
La chiave può essere senza parentesi?
Mi rendo conto che ci sono modi migliori per scrivere questo, e sapere come scrivere il mio metodo che funziona, ma questo metodo [] appena mi sconcerta ... Ogni aiuto è molto apprezzato, grazie
credo che il PO è stato chiesto il motivo per cui non si direbbe: ("chiave") 'my_array []' invece e come my_array [ "chiave"] potrebbe forse lavorare ... –
quindi, per definizione, ogni volta che creo il metodo [] per una classe in ruby, sa che viene utilizzato su una sorta di array e prevede parametri (chiave) che verranno successivamente inseriti in []? – oFca
@oFca Se definisci un metodo chiamato [], allora ti permetterà di chiamare '[" chiave "]' su un'istanza di quella classe. Una matrice o hash sono due esempi di dove Ruby lo utilizza internamente. – Gazler