Così, ho appena saputo che invece di cose come la scrittura:Ruby che prova a cogliere una nuova notazione. (Iniettare (:) vs selezionare (&: anche); il motivo per cui si ha &??)
[1,2,3,4,5].inject {|x,y| x + y} => 15
Potrei scrivere
[1,2,3,4,5].inject(:+) => 15
ho anche imparato che invece di scrivere
[1,2,3,4,5].select {|x| x.even?} => [2,4]
potrei scrivere
[1,2,3,4,5].select(&:even?) => [2,4]
La mia domanda è perché uno (seleziona) utilizza lo &
e l'altro (inietto) no. Sono sicuro che lo e lo +
sono trattati a simboli, ma mi piacerebbe chiarire il motivo per cui lo &
viene utilizzato in uno e perché vengono utilizzati gli :
.
Inoltre, sono a conoscenza che potrei fare queste notazioni su più di un semplice inject
e select
.
Grazie mille!
Vedo. Molto, molto interessante! In Ruby, trovo che molte cose sono molto semplici da fare, come ho fatto con la mia selezione. Sei andato avanti e hai scritto '{| elem | elem.send: even?} 'Questo è in sostanza ciò che il mio blocco sta facendo in background? Cambiare se stesso in quel formato e poi fare qualsiasi calcolo che è destinato a fare? Tanti modi diversi di fare cose in Ruby. Sono curioso. – David
@David: sì, questo è ciò che 'select (&: even?)' Fa sotto il cofano. –
@David non dimenticare di accettare la risposta, se effettivamente risponde alla domanda! – vgoff