No, it has nothing to do with +=
. The unary &
operator, when used in a method call, turns the given Proc object into a block. If the operand is not a Proc (as in this case where it is a symbol), first to_proc
is called on it and then the resulting Proc object is turned into a block.