From: ruby@... Date: 2017-12-12T08:06:18+00:00 Subject: [ruby-core:84187] [Ruby trunk Feature#11925] Struct construction with kwargs Issue #11925 has been updated by herwin (Herwin W). knu (Akinori MUSHA) wrote: > What if `Struct.new([:a, :b])` created a class with the desired constructor? If you'd compare the two possible constructors: ```ruby Struct.new(:a, :b) Struct.new([:a, :b]) ``` There is nothing in the second one that would indicate the second creates a keyword constructor. If I hadn't read this discussion, I would just expect them to behave the same. ---------------------------------------- Feature #11925: Struct construction with kwargs https://bugs.ruby-lang.org/issues/11925#change-68296 * Author: prijutme4ty (Ilya Vorontsov) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Propose to make Struct subclass constructors which accept keyword arguments. Not sure, if it's reasonable to allow `.new` accept kwargs, so may be should use different method named like `.create`: ```ruby Point = Struct.new(:x,:y, :color) pt_1 = Point.create(x: 1, y: 2) # => Point pt_2 = Point.create!(x: 1, y: 2) # => ArgumentError, color not specified. ``` It will greatly simplify work with big structures, especially in cases when struct layout changes and for cases when structure can have lots of non-significant values. It also allows simpler ways to use implement default values for struct members. -- https://bugs.ruby-lang.org/ Unsubscribe: