Was passiert mit Instanzvariablen beim Kopieren einer Instanz mit Ruby?

Fazit

Instanzvariablen werden ebenfalls kopiert

Überprüfung

Wenn es so eine Klasse gäbe

class Test
  def set_name(name)
    @name = name
  end
  def get_name
    @name
  end
end

Stellen Sie zunächst die Instanzvariable normal ein

origin = Test.new
=> #<Test:0x00007fcebd06e940>

origin.set_name("origin")
=> "origin"

origin.get_name
=> "origin"

Beim Klonen wird die gesamte Instanzvariable kopiert

copy = origin.clone
=> #<Test:0x00007fcebd05d7a8 @name="origin">

copy.get_name
=> "origin"

Das Umschreiben der Instanzvariablen der Kopie wirkt sich nicht auf das Original aus

copy.set_name('copy')
=> "copy"

origin.get_name
=> "origin"

dup Gleiches gilt für dup

copy2 = origin.dup
=> #<Test:0x00007fcebd054040 @name="origin">

irb(main):030:0> copy2.get_name
=> "origin"

Recommended Posts

Was passiert mit Instanzvariablen beim Kopieren einer Instanz mit Ruby?
[Ruby] Was ist eine Instanz?
Was ist nach der Installation von 'devise' 'bootstrap' von gemfile with Rails zu tun, wenn url ein Fehler ist?
[Ruby] Bezieht sich self auf eine Klasse oder eine Instanz?
Initialisierung mit einer leeren Zeichenfolge für eine Instanz vom Typ Java-Zeichenfolge
So geben Sie db beim Erstellen einer App mit Rails an
Umgang mit Instanzen
Was tun, wenn in einer Lightweight-JRE eine UnsupportedCharsetException auftritt?
[Ruby] Dies ist die Lösung. Wann sollte ich Instanzvariablen verwenden?
Beim Versuch, PowerMock mit JUnit zu verwenden, wurde ein IllegalAccessError angezeigt
Wovon ich süchtig war, als ich die Google-Authentifizierung mit Rails implementierte
Automatischer Datei-Upload mit altem Ruby-Edelstein Was tun mit Watir?
Studieren bei CodeWar (Ruby) ④ case ~ when
Was tun, wenn eine javax.batch.operations.JobStartException auftritt?
Was tun, wenn Sie mit Reißverschluss sterben, wenn Sie Pom haben, wenn Sie ein ausführbares Glas mit Gradle erstellen?
[IOS] Was tun, wenn das Bild mit einer Farbe gefüllt ist?
Was tun, wenn CentOS nicht mit VirtualBox unter Catalina gestartet werden kann?
Was tun, wenn ein Fehler auftritt, wenn nokogiri bei der Bundle-Installation eingeht?
Hinweise zur Vorgehensweise bei der Einrichtung von EC2 mit t2.micro
So beschneiden Sie ein Bild in libGDX
Senden Sie E-Mails von Google Mail mit Ruby
Was tun, wenn eine javax.el.PropertyNotWritableException auftritt?
undefinierte Methode Was tun, wenn Sie "user_signed_in" erhalten?
Konvertieren Sie mit Ruby von JSON nach TSV und von TSV nach JSON
So überprüfen Sie, ob eine Instanzvariable in einer Ruby-Klasse definiert ist
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen
Was zu tun ist, wenn es ungültig ist, weil es nicht mit einem '-' beginnt
Was tun, wenn die ffi-Installation beim Starten einer Anwendung in Rails fehlschlägt?
WELD-001408: Was tun, wenn nicht erfüllte Abhängigkeiten für den Typ Bean mit den Qualifikationsmerkmalen @Default vorliegen?
Was tun, wenn beim Abrufen von Rails datetime_field die Fehlermeldung "Bitte geben Sie einen gültigen Wert ein" angezeigt wird?