From cfe10e482e0657195cadf01f0be72e11b7fb62b4 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 9 Sep 2022 18:58:07 +0900 Subject: [PATCH] [DOC] Update `Struct#new` behavior with `keyword_init: true` --- struct.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/struct.c b/struct.c index 7085042b43..1e7294eb5e 100644 --- a/struct.c +++ b/struct.c @@ -471,8 +471,8 @@ rb_struct_define_under(VALUE outer, const char *name, ...) * * - May be anonymous, or may have the name given by +class_name+. * - May have members as given by +member_names+. - * - May have initialization via ordinary arguments (the default) - * or via keyword arguments (if keyword_init: true is given). + * - May have initialization via ordinary arguments (unless + * keyword_init: true is given), or via keyword arguments * * The new subclass has its own method ::new; thus: * @@ -557,7 +557,7 @@ rb_struct_define_under(VALUE outer, const char *name, ...) * By default, the arguments for initializing an instance of the new subclass * are ordinary arguments (not keyword arguments). * With optional keyword argument keyword_init: true, - * the new subclass is initialized with keyword arguments: + * the new subclass must be initialized with keyword arguments: * * # Without keyword_init: true. * Foo = Struct.new('Foo', :foo, :bar) @@ -567,6 +567,7 @@ rb_struct_define_under(VALUE outer, const char *name, ...) * Bar = Struct.new(:foo, :bar, keyword_init: true) * Bar # => # => Bar(keyword_init: true) * Bar.new(bar: 1, foo: 0) # => # + * Bar.new(0, 1) # Raises ArgumentError: wrong number of arguments * */