Actions
Feature #15222
openAdd a way to distinguish between Struct classes with and without keyword initializer
Status:
Open
Assignee:
-
Target version:
-
Description
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
Actions
Like0
Like0Like0Like0Like0