Übergeben Sie Argumente mit dem splat-Operator als Verweis auf einen Block

Es scheint, dass die Argumente kopiert werden, wenn der splat-Operator verwendet wird, um Argumente als Referenz an einen Block zu übergeben.

Ich habe das:

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)

Wie kann ich diese Argumente als Referenz übergeben? Es scheint zu funktionieren, wenn ich das Array direkt übergebe, aber der splat-Operator wäre hier viel praktischer, intuitiver und wartbarer.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage