This commit adds copy with changes functionality for Data objects using a new method Data#with.
Since Data objects are immutable, the only way to change them is by creating a copy. This PR adds a with method for Data class instances that optionally takes keyword arguments.
If the with method is called with no arguments, the behaviour is the same as the Kernel#dup method, i.e. a new shallow copy is created with no field values changed.
However, if keyword arguments are supplied to the with method, then the copy is created with the specified field values changed. For example:
Passing positional arguments to with or passing keyword arguments to it that do not correspond to any of the members of the Data class will raise an ArgumentError.
Add copy with changes functionality for Data objects (#6766)
Implements [Feature #19000]
This commit adds copy with changes functionality for
Dataobjectsusing a new method
Data#with.Since Data objects are immutable, the only way to change them is by
creating a copy. This PR adds a
withmethod forDataclass instancesthat optionally takes keyword arguments.
If the
withmethod is called with no arguments, the behaviour is thesame as the
Kernel#dupmethod, i.e. a new shallow copy is createdwith no field values changed.
However, if keyword arguments are supplied to the
withmethod, thenthe copy is created with the specified field values changed. For
example:
Passing positional arguments to
withor passing keyword arguments toit that do not correspond to any of the members of the Data class will
raise an
ArgumentError.Co-authored-by: Alan Wu XrXr@users.noreply.github.com