Ruby · Intermediário · Inglês · Técnico
Data
Classe do Ruby 3.2 para criar objetos de valor imutáveis com Data.define. Gera construtor, leitores, igualdade e o método with, que copia o objeto trocando campos.
Onde usar
Aparece em coordenadas, dinheiro, resultados e DTOs que não devem mudar depois de criados. É a alternativa imutável ao Struct.
Em código
Ponto = Data.define(:x, :y)
a = Ponto.new(x: 1, y: 2)
b = a.with(y: 5)
p b.y # => 5
p a.y # => 2
p a == Ponto.new(1, 2) # => trueExemplos
I modeled the coordinate as a Data class.
Modelei a coordenada como uma classe Data.
Use with to get a copy and change one field.
Use with para ter uma cópia e mudar um campo.
Cuidado
Não tente atribuir a.x = 1: não existe setter. Para mudar um campo, crie uma cópia com with.
Sinônimos
objeto de valor
Antônimos
Struct