В следующем примере ruby, что означает &? Это по линии += в цикле?
&
+=
payments.sum(&:price)
Спасибо
Rich
&: цена - это сокращение от «использовать метод #price для каждого члена коллекции».
Унарный «&», когда передается в качестве аргумента в метод, он говорит Ruby «взять это и включить егов проц ".Метод #to_proc для символа # отправит этот символ принимающему объекту, который вызывает соответствующий метод с этим именем.
"Если последнему аргументу метода предшествует амперсанд, Ruby предполагает, что это объект Proc. Он удаляет его из списка параметров, преобразует объект Proc в блок и связывает его с методом."
От Ruby для программирования: Прагматическое руководство для программистов
Подробнее об этом в этой статье .
Нет, это не имеет ничего общего с +=. Унарный оператор & при использовании в вызове метода превращает данный объект Proc в блок. Если операнд не является Proc (как в этом случае, когда он является символом), сначала вызывается to_proc, а затем полученный объект Proc превращается в блок.
to_proc
Я вряд ли эксперт по Ruby, но, насколько я помню, это означает почти то же самое, что и в C / C ++, где это оператор адреса.Другими словами, сам метод price передается в качестве аргумента sum вместо вызова price, а результат передается в sum
price
sum