From: "Earlopain (Earlopain _) via ruby-core" Date: 2026-07-11T16:40:05+00:00 Subject: [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)) # # dump_and_load_struct(Bar.new(2)) # # ``` An issue that might be related: https://bugs.ruby-lang.org/issues/14314 -- 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/