Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was sind Immutabilität und Mutabilität?

Beitrags-Cover: Was sind Immutabilität und Mutabilität?
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Unveränderlichkeit und Veränderlichkeit – das sind Eigenschaften von Objekten (in der Programmierung und anderen Bereichen), die bestimmen, ob Objekte nach ihrer Erstellung verändert werden können. Ich habe nachgeschaut, wie es richtig ist – ist es mutabelE oder mutabelItät, und es scheint, dass beide Varianten korrekt sind (aber das ist nicht sicher ^_^). 

Beispiel für Unveränderlichkeit

Stellen Sie sich ein Foto vor, das Sie gemacht und ausgedruckt haben. Nachdem das Foto ausgedruckt wurde, können Sie seinen Inhalt nicht mehr ändern. Wenn Ihnen nicht gefällt, dass auf dem Foto jemand mit geschlossenen Augen abgebildet ist, können Sie dieses Foto nicht ändern – stattdessen müssen Sie ein neues Foto machen. In diesem Beispiel ist das Foto unveränderlich.

Beispiel für Veränderlichkeit

Stellen Sie sich nun eine Tonfigur vor, die Sie formen. Wenn Sie entscheiden, dass Sie die Form der Nase an der Figur ändern möchten, können Sie dies leicht tun, indem Sie die Form des Tons ändern. In diesem Beispiel ist die Tonfigur veränderlich.

Beispiel aus der Programmierung (Ruby)

Strings in vielen Programmiersprachen sind unveränderlich. Das bedeutet, dass der Wert eines Strings nach seiner Erstellung nicht mehr geändert werden kann. Aber jede Sprache hat ihre eigenen Nuancen, und je nach Version der Sprache kann das Konzept von Unveränderlichkeit/Veränderlichkeit variieren.
Zum Beispiel in Ruby – ein String kann mutieren (verändert werden). Lassen Sie uns das überprüfen (ruby 3.2.1):
str = "Hello"

puts str.object_id
=> 1960

str.upcase!
=> "HELLO"

puts str
=> HELLO

puts str.object_id
=> 1960
Das heißt, mit der Methode upcase! haben wir den Text der Variablen geändert.
Wenn wir möchten, dass Strings nicht verändert werden, müssen wir einen magischen Kommentar (magic comment) am Anfang des Ruby-Skripts hinzufügen:
# frozen_string_literal: true
Das heißt, unsere Datei (example.rb) wird so aussehen:
# frozen_string_literal: true

str = "Hello"
puts str.object_id

str.upcase!
puts str
puts str.object_id
Und das Ergebnis seiner Ausführung wird folgendermassen sein:
ruby ~/Desktop/example.rb 
60
/Users/user/Desktop/example.rb:5:in `upcase!': can't modify frozen String: "Hello" (FrozenError)
	from /Users/user/Desktop/example.rb:5:in `<main>'
Wir sehen, dass das Skript – 60 ausgegeben hat. Das ist das Ergebnis des Codes puts str.object_id. Und dann erhalten wir einen Laufzeitfehler bei der Modifikation des Strings – can't modify frozen String: "Hello" (FrozenError). Das bedeutet, wir haben die Werte (string literal) eingefroren und erhalten jetzt einen Fehler, wenn wir versuchen, sie zu ändern. Es wird gesagt, dass Ruby 3.4 standardmäßig gefrorene Literale haben wird. Daher müssen wir die Option --disable-frozen-string-literal oder etwas Ähnliches hinzufügen, um Fehler nach dem Update zu vermeiden. Lassen Sie uns sehen.
Unveränderlichkeit und Veränderlichkeit sind grundlegende Konzepte in der Programmierung, die Programmierern helfen, den Zustand von Objekten und deren Änderungen zu verwalten. Die Verwendung unveränderlicher Objekte kann den Code vorhersehbarer und einfacher zu testen machen, während veränderliche Objekte bequemer für die Modellierung dynamischer Systeme sein können.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Warum gibt der Ruby-Code nil zurück, nachdem puts ausgeführt wurde?
29. Mai, 20:30 Uhr

Warum gibt der Ruby-Code nil zurück, nachdem puts ausgeführt wurde?

meme code
meme code@memecode
Was ist der Unterschied zwischen nil und false in Ruby?
29. Mai, 20:59 Uhr

Was ist der Unterschied zwischen nil und false in Ruby?

meme code
meme code@memecode
Warum ist eine leere Zeichenkette (string) in Ruby nicht false?
31. Mai, 14:39 Uhr

Warum ist eine leere Zeichenkette (string) in Ruby nicht false?

meme code
meme code@memecode
Sichtbarkeit des lokalen Variablenbereichs in Ruby
03. Jun, 16:46 Uhr

Sichtbarkeit des lokalen Variablenbereichs in Ruby

meme code
meme code@memecode
Was ist der Unterschied zwischen int und bigint in Ruby? Minimale und maximale Werte.
13. Jun, 06:37 Uhr

Was ist der Unterschied zwischen int und bigint in Ruby? Minimale und maximale Werte.

meme code
meme code@memecode
Was bedeutet der Fehler 'is out of range' in Ruby on Rails? Bereichsfehler - Ganzzahl mit einer Begrenzung von 4 Bytes
13. Jun, 07:18 Uhr

Was bedeutet der Fehler 'is out of range' in Ruby on Rails? Bereichsfehler - Ganzzahl mit einer Begrenzung von 4 Bytes

meme code
meme code@memecode
[Ruby] Was ergibt die Addition von 10,5 und 10?
23. Jun, 13:23 Uhr

[Ruby] Was ergibt die Addition von 10,5 und 10?

meme code
meme code@memecode
[Ruby] Was unterscheidet Variablen, die mit @, @@ und $ beginnen?
23. Jun, 14:00 Uhr

[Ruby] Was unterscheidet Variablen, die mit @, @@ und $ beginnen?

meme code
meme code@memecode
Was ist eine Funktion in der Programmierung?
24. Jun, 18:15 Uhr

Was ist eine Funktion in der Programmierung?

meme code
meme code@memecode
[Fix] extconf.rb ist bei der Installation der Ruby-Bibliothek Gosu fehlgeschlagen
27. Jun, 16:38 Uhr

[Fix] extconf.rb ist bei der Installation der Ruby-Bibliothek Gosu fehlgeschlagen

meme code
meme code@memecode
Wie macht man einen leeren Git-Commit?
28. Jun, 08:33 Uhr

Wie macht man einen leeren Git-Commit?

meme code
meme code@memecode
Ruby-Bibliothek Gosu zur Erstellung von 2D-Spielen
29. Jun, 08:48 Uhr

Ruby-Bibliothek Gosu zur Erstellung von 2D-Spielen

meme code
meme code@memecode