From: "headius (Charles Nutter)" Date: 2013-09-27T19:29:26+09:00 Subject: [ruby-core:57422] [ruby-trunk - Feature #8839] Class and module should return the class or module that was opened Issue #8839 has been updated by headius (Charles Nutter). mame (Yusuke Endoh) wrote: > How useful is this proposal? > I think we should not change anything without consideration of use case. One use: my_class = class Foo ... end We can get the reference to a class being created immediately without adding "self" at the end. It also brings some equivalence with my_class = Class.new. Another: class Foo def self.init @foo = Foo.new end end.init The use cases I can think of are all fairly subtle, but I think they're valid. Ultimately, the biggest reason I think this should happen is because class Foo; def bar; end; end returning :bar in 2.1 makes very little sense. ---------------------------------------- Feature #8839: Class and module should return the class or module that was opened https://bugs.ruby-lang.org/issues/8839#change-42029 Author: headius (Charles Nutter) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: Target version: next minor With the change for https://bugs.ruby-lang.org/issues/3753, "def" forms now return the symbolic name of the method defined. Because class and module bodies just return the last expression in their bodies, this means they will now usually end up returning a symbol for the last method defined. This does not seem useful or correct. I think class and module should return a reference to the class or module just opened. This would make the return value useful and consistent. -- http://bugs.ruby-lang.org/