Tak, właśnie dowiedziałem się, że zamiast pisać takie rzeczy jak:Ruby próbuje uchwycić nową notację. (Wstrzyknąć (:) vs wybrać (&: nawet); dlaczego trzeba i?)
[1,2,3,4,5].inject {|x,y| x + y} => 15
mógłbym napisać
[1,2,3,4,5].inject(:+) => 15
dowiedziałem się też, że zamiast pisać
[1,2,3,4,5].select {|x| x.even?} => [2,4]
mógłbym napisać
[1,2,3,4,5].select(&:even?) => [2,4]
Moje pytanie brzmi: dlaczego jeden (wybierz) używa &
, a drugi (wstrzykiwanie) nie. Jestem pewien, że :
są, ponieważ even?
i +
są traktowane na symbole, ale chciałbym wyjaśnić, dlaczego &
jest używany w jednym i dlaczego :
są używane.
Ponadto zdaję sobie sprawę z tego, że mogłem wykonać te zapisy na więcej niż tylko inject
i select
.
Wielkie dzięki!
Rozumiem. Bardzo, bardzo interesujące! W Ruby odkryłem, że wiele rzeczy jest bardzo prostych do wykonania, tak jak zrobiłem to z moim wyborem. Poszliście naprzód i napisaliście '{| elem | elem.send: even?} 'Czy to w istocie to, co robi mój blok w tle? Zmieniając się w ten format, a następnie wykonując jakiekolwiek obliczenia, które ma wykonywać? Tak wiele różnych sposobów robienia rzeczy w Ruby. Jestem ciekawy. – David
@David: tak, to właśnie 'select (&: even?)' Ma pod maską. –
@ David nie zapomnij przyjąć odpowiedzi, jeśli rzeczywiście odpowiada na pytanie! – vgoff