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 ist Memoization in Ruby?

Beitrags-Cover: Was ist Memoization in Ruby?
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Memoization - ist, wenn Ruby das Ergebnis einer Berechnung "merkt", um es nicht erneut zu berechnen. Es wird zur Optimierung verwendet - besonders, wenn die Methode viele Male aufgerufen wird.

Wie funktioniert @x ||= ...

@x ||= fetch_x
bedeutet:
Wenn @x noch keinen Wert hat (d.h. nil oder false), dann führe fetch_x aus und speichere das Ergebnis in @x. Andernfalls - gib einfach das bereits gespeicherte zurück.

Unterschied zur einfachen Zuweisung

@x = fetch_x    # führt fetch_x JEDES Mal aus
@x ||= fetch_x  # führt fetch_x nur beim ERSTEN Mal aus
Zum Beispiel:
def expensive
  puts "Berechne..."
  42
end

def answer
  @answer ||= expensive
end

answer  # => Berechne... 42
answer  # => 42 (ohne zweite Berechnung!)
Aber vorsichtig:
||= funktioniert nicht, wenn der Wert false sein kann:
@flag ||= true
# wenn @flag = false, wird Ruby dies als "leer" betrachten und es auf true setzen
Wenn man sogar false speichern muss, ist es besser zu schreiben:
@flag = true if @flag.nil?

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was sind Proc und Lambda in Ruby?
28. Okt '25, 15:57 Uhr

Was sind Proc und Lambda in Ruby?

Нотатки про Ruby та RoR
Was passiert, wenn man [1, 2, 3].map(&Person) aufruft?
29. Okt '25, 17:54 Uhr

Was passiert, wenn man [1, 2, 3].map(&Person) aufruft?

Нотатки про Ruby та RoR
Singleton-Klasse (Eigenklasse) in Ruby: was ist das und wozu wird sie benötigt
29. Okt '25, 18:29 Uhr

Singleton-Klasse (Eigenklasse) in Ruby: was ist das und wozu wird sie benötigt

Нотатки про Ruby та RoR
==, gleich?, eql?, === in Ruby: was sie überprüfen und wann man sie verwenden sollte
29. Okt '25, 20:47 Uhr

==, gleich?, eql?, === in Ruby: was sie überprüfen und wann man sie verwenden sollte

Нотатки про Ruby та RoR
Include, Extend, Prepend in Ruby: wie sie funktionieren und wo der Unterschied liegt
29. Okt '25, 21:20 Uhr

Include, Extend, Prepend in Ruby: wie sie funktionieren und wo der Unterschied liegt

Нотатки про Ruby та RoR
module_function in Ruby: wenn die Methoden eines Moduls sowohl als Modulmethoden als auch als Funktionen verfügbar sind
29. Okt '25, 21:53 Uhr

module_function in Ruby: wenn die Methoden eines Moduls sowohl als Modulmethoden als auch als Funktionen verfügbar sind

Нотатки про Ruby та RoR
is_a?, kind_of?, instance_of? — wie prüft Ruby den Typ eines Objekts?
30. Okt '25, 19:55 Uhr

is_a?, kind_of?, instance_of? — wie prüft Ruby den Typ eines Objekts?

Нотатки про Ruby та RoR
&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann
30. Okt '25, 20:23 Uhr

&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann

Нотатки про Ruby та RoR
Variablen in Ruby: @, @@ und Klasseninstanzvariablen
30. Okt '25, 20:54 Uhr

Variablen in Ruby: @, @@ und Klasseninstanzvariablen

Нотатки про Ruby та RoR
Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby
30. Okt '25, 21:06 Uhr

Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby

Нотатки про Ruby та RoR
Was ist Middleware in Ruby on Rails und wann wird sie verwendet?
4. Nov '25, 10:39 Uhr

Was ist Middleware in Ruby on Rails und wann wird sie verwendet?

Нотатки про Ruby та RoR
Was ist der Vanilla Rails-Ansatz?
14. Nov '25, 16:48 Uhr

Was ist der Vanilla Rails-Ansatz?

Нотатки про Ruby та RoR