Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

Obiecte Imutabile și Structuri de Date în Ruby: Struct și Data.define în Ruby

Ghid complet pentru crearea rapidă a structurilor de date în Ruby: utilizarea Struct pentru containere mutabile și noul Data.define (Ruby 3.2+) pentru Value Objects imutabile.

Sintaxă
Punct = Data.define(:x, :y); p = Punct.new(10, 20)

Când avem nevoie de o clasă simplă care să grupeze câteva atribute (un DTO sau un Value Object), scrierea manuală a metodelor initialize, attr_reader și == este redundantă. Ruby oferă două instrumente native: Struct și modernul Data.define.

Data.define în Ruby 3.2+ (Obiecte de Valoare Imutabile)
# Data.define generează o clasă complet imutabilă (fără setter):
LocatieGPS = Data.define(:latitudine, :longitudine, :oras) do
    # Putem adăuga metode suplimentare:
    def descriere
        "#{oras}: (#{latitudine}, #{longitudine})"
    end
end

loc1 = LocatieGPS.new(latitudine: 44.4268, longitudine: 26.1025, oras: "București")
loc2 = LocatieGPS.new(latitudine: 44.4268, longitudine: 26.1025, oras: "București")

puts loc1.descriere
puts "Egalitate de valoare structurală: #{loc1 == loc2}" # true

# Imutabilitate garantată (încercarea de modificare aruncă NoMethodError):
# loc1.oras = "Cluj" -> Eroare!

# Crearea unei copii modificate cu metoda 'with':
loc3 = loc1.with(oras: "București Centru")
puts loc3.descriere
Caracteristică Struct Data.define (Ruby 3.2+)
Mutabilitate Mutabil (are setteri x= impliciți) Imutabil (read-only, fără setteri)
Inițializare cu Keyword Args Opțională (keyword_init: true) Nativă și pozițională ambele permise
Metoda with (evoluție stări) Nu Da (creează copie nouă cu modificări)
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Obiecte Imutabile și Structuri de Date în Ruby: Struct și Data.define

Ai o nelămurire despre utilizarea comenzii Obiecte Imutabile și Structuri de Date în Ruby: Struct și Data.define sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.