From: "ozydingo (Andrew Schwartz) via ruby-core" Date: 2025-02-01T06:37:47+00:00 Subject: [ruby-core:120852] [Ruby master Feature#19555] Allow passing default options to `Data.define` Issue #19555 has been updated by ozydingo (Andrew Schwartz). I've found the need for something like this as well, I have a use case where it's getting repetitive and distractingly verbose to build out the `Data` blocks just for a number of defaults. The mutable defaults is a really good point, though it's not too dissimilar from existing behavior in Ruby's Hash with defaults -- ```rb h = Hash.new([]) h[1] << 'foo' h[2] #=> ['foo'] ``` So in a sense there is prior art here and a pattern that Rubyists already have to be aware of. ---------------------------------------- Feature #19555: Allow passing default options to `Data.define` https://bugs.ruby-lang.org/issues/19555#change-111728 * Author: p8 (Petrik de Heus) * Status: Open ---------------------------------------- Defining a subclass of `Data` with default attributes can currently be done by overriding `intialize`: ```ruby class Point < Data.define(:x, :y, :z) def initialize(x:, y:, z: 0) = super end p Point.new(1, 2) #=> # ``` It would be nice if we could do it in `define` as well: ```ruby Point = Data.define(:x, :y, z: 0) ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/