Pase argumentos por referencia a un bloque con el operador splat

Parece que los argumentos se copian cuando se usa el operador splat para pasar los argumentos a un bloque por referencia.

Tengo esto:

def method
  a = [1,2,3]
  yield(*a)
  p a
end

method {|x,y,z| z = 0}
#=> this puts and returns [1, 2, 3] (didn't modified the third argument)

¿Cómo puedo pasar estos argumentos por referencia? Parece funcionar si paso la matriz directamente, pero el operador de Splat sería mucho más práctico, intuitivo y fácil de mantener aquí.

Respuestas a la pregunta(4)

Su respuesta a la pregunta