From: "ufuk (Ufuk Kayserilioglu) via ruby-core" Date: 2024-09-03T12:14:57+00:00 Subject: [ruby-core:119025] [Ruby master Feature#20712] module should return newly defined module Issue #20712 has been updated by ufuk (Ufuk Kayserilioglu). `module` and `class` don't return `nil`, they return the value of the last statement in the scope: ```ruby x = module Foo 42 end puts x #=> 42 x = class Bar def foo = 42 end puts x #=> :foo ``` There might be code that relies on this fact, so the proposal could be a backward compatibility concern. On the other hand, if this were to change, since method definitions (i.e. `def`s) return the _name_ of the method defined and not the method object itself, I think it would make more sense for `module`/`class` to return the _name_ of the module/class being defined and not the module/class object itself. ---------------------------------------- Feature #20712: module should return newly defined module https://bugs.ruby-lang.org/issues/20712#change-109602 * Author: esad (Esad Hajdarevic) * Status: Open ---------------------------------------- Currently module keyword returns nil after defining a new module: ``` x = module Foo end # x is nil ``` It would be more consistent with `Module.new` if module keyword returned the newly defined module. Then we could do: ``` using(module Foo refine ... end) ``` instead of ``` module Foo end using Foo ``` -- 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/