[ruby-core:126055] [Ruby Feature#15222] Add a way to distinguish between Struct classes with and without keyword initializer
Issue #15222 has been updated by Earlopain (Earlopain _). Status changed from Open to Closed Added a while ago via https://bugs.ruby-lang.org/issues/18008 ---------------------------------------- Feature #15222: Add a way to distinguish between Struct classes with and without keyword initializer https://bugs.ruby-lang.org/issues/15222#change-118053 * Author: pluff (Pavel Shutsin) * Status: Closed ---------------------------------------- With Ruby 2.5.0 Struct subclasses can have different `initialize` arguments list based on `keyword_init` option. However, there is no way in Ruby to distinguish Structs with keyword arguments syntax and without. I propose a class method `keyword_init?` that will allow developers to understand if given structure has keyword based initializer or not. Example use case for serialization: ``` Foo = Struct.new(:foo, keyword_init: true) Bar = Struct.new(:bar) def dump_and_load_struct(object) serialized = object.to_h object.class.new(object.class.keyword_init? ? serialized : serialized.values) end dump_and_load_struct(Foo.new(foo: 1)) # #<struct Foo foo=1> dump_and_load_struct(Bar.new(2)) # #<struct Bar bar=1> ``` An issue that might be related: https://bugs.ruby-lang.org/issues/14314 -- https://bugs.ruby-lang.org/
participants (1)
-
Earlopain (Earlopain _)