molily: pass by reference - verständnisproblem

Beitrag lesen

Erklärt sich so auch, warum ich zwar eine Objektvariable ändern kann (obj.x) wenn mir obj als Paramter übergeben wurde, nicht aber das Objekt selbst auslöschen kann?

Ja. Wenn du nur den Zettel besitzt, kannst du damit auf das Object zugreifen und dessen Eigenschaften ändern.
Was du aber nicht ändern kannst, ist der Inhalt einer Schublade in einem anderen Regal, in dem zufällig ein gleicher Verweis-Zettel liegt. Von dem weißt du gar nicht - zumindest nicht darüber, dass du den Verweis-Zettel besitzt. Lediglich über die Scope-Chain wäre der Zugriff auf Variablen eines anderen Regals möglich.

Schubladenmodelle finde ich sehr anschaulich. So kann man ja auch Pointer veranschaulichen.

Bei Call by Reference gäbe es eben keine Verweis-Zettel und keine Trennung zwischen »Variablen-Regalen« und »Object-Regalen«. Es gäbe nur ein Regal, in dem dann auch das wirklich Object gespeichert ist. Bei der Übergabe wird nicht eine weitere Schublade aufgemacht, sondern ein und dieselbe Schublade verfügbar gemacht. Diese Schublade kann dann verschiedene Namen tragen.

Mathias