8.16. Tworzenie kopii obiektu
Problem
Chcemy utworzyć kopię obiektu, którą będzie można modyfikować bez wpływu na oryginał.
Rozwiązanie
Ruby dostarcza dwie metody do wykonywania kopii obiektów; najczęściej używaną jest Object#clone
.
s1 = 'foo' # => "foo" s2 = s1.clone # => "foo" s1[0] = 'b' [s1, s2] # => ["boo", "foo"]
Dyskusja
W języku Ruby istnieją dwie metody kopiowania obiektów: szybka — Object#dup
— i „gruntowna” — Object#clone
. Metoda Object#dup
tworzy nową instancję tej samej klasy co obiekt oryginalny, po czym nadaje wartości zmiennym instancyjnym nowego obiektu tak, że odwołują się one do tych samych obiektów co odpowiednie zmienne obiektu oryginalnego. Jeżeli obiekt oryginalny oznaczony jest jako naruszony (tainted ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.