Object#then și yield_self în Ruby: Conducte Funcționale de Transformare în Ruby

Obiecte și Metaprogramare Ruby 2.5+ (yield_self) / 2.6+ (then) Q&A / Distribuie cod
Sintaxă
object.then { |obj| ... } -> rezultat
object.yield_self { |obj| ... }

Metoda then (introdusă inițial ca yield_self) transmite obiectul curent ca argument blocului și returnează rezultatul evaluării acelui bloc, facilitând scrierea de cod funcțional stil pipeline de la stânga la dreapta.

# Fără 'then' (imbricare clasică greu de citit din interior spre exterior):
# format_valuta(calculeaza_tva(aplica_discount(100)))

# Cu 'then' (pipeline fluid citibil secvențial de sus în jos):
pret_final = 100
  .then { |p| p * 0.90 }           # aplică reducere 10% -> 90.0
  .then { |p| p * 1.19 }           # adaugă TVA 19% -> 107.1
  .then { |p| sprintf("%.2f RON", p) } # formatare text -> "107.10 RON"

puts pret_final

Diferența cheie tap vs then: tap returnează obiectul inițial (pentru efecte laterale), în timp ce then returnează valoarea produsă de bloc (pentru transformare).

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Object#then și yield_self în Ruby: Conducte Funcționale de Transformare

Ai o nelămurire despre utilizarea comenzii Object#then și yield_self în Ruby: Conducte Funcționale de Transformare 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.