Руби пытается понять новую запись. (inject (:) vs select (&: even?); почему есть &?)
Итак, я только что узнал, что вместо того, чтобы писать такие вещи, как:
[1,2,3,4,5].inject {|x,y| x + y} => 15
Я мог бы написать
[1,2,3,4,5].inject(:+) => 15
Я также узнал, что вместо того, чтобы писать
[1,2,3,4,5].select {|x| x.even?} => [2,4]
Я мог бы написать
[1,2,3,4,5].select(&:even?) => [2,4]
Мой вопрос, почему один (выберите) использует&
а другой (впрыскивать) нет. Я уверен, что:
потому чтоeven?
а также+
обрабатываются в символах, но я хотел бы разъяснить, почему&
используется в одном и почему:
используются.
Кроме того, я знаю, что я мог бы сделать эти записи больше, чем простоinject
а такжеselect
.
Большое спасибо!