Ändern des Werts von ruby-Variablen/Referenzen

Ich stolperte über etwas, was ich nicht ganz verstehen. Ich weiß, dass die Variablen in ruby sind Referenzen. So genial, dass Zeug ist möglich. Aber wenn ich übergeben Sie eine variable an eine Methode, es verhält sich seltsam:

my_var_a = "nothing happend to me"
my_var_b = "nothing happend to me"

def parse_set(my_var_set)
  my_var_set = "my value changed"
end

def parse_sub(my_var_sub)
  my_var_sub.sub! /(.*)/, "my value changed"
end

parse_set(my_var_a)
parse_sub(my_var_b)

my_var_a # => "nothing happend to me"
my_var_b # => "my value changed"

Können Sie mir erklären, warum es funktioniert mit sub! und = lässt das Objekt unverändert? Wie kann ich vermeiden, um sub! aber mit dem gleichen Ergebnis?

Schreibe einen Kommentar