From: "matz (Yukihiro Matsumoto)" Date: 2013-08-09T20:34:34+09:00 Subject: [ruby-dev:47605] [ruby-trunk - Feature #3753] value of def-expr Issue #3753 has been updated by matz (Yukihiro Matsumoto). Yes, I think Module#define_method should return a symbol as def statement does. Matz. ---------------------------------------- Feature #3753: value of def-expr https://bugs.ruby-lang.org/issues/3753#change-41035 Author: usa (Usaku NAKAMURA) Status: Assigned Priority: Normal Assignee: usa (Usaku NAKAMURA) Category: core Target version: current: 2.1.0 =begin RubyKaigi見てて思い出したのですが、def式はSymbolを返すようにしませんか? そうすると、 class Foo private def foo() # ... end end などと書けるようになります。 以下パッチ。 Index: vm.c =================================================================== --- vm.c (リビジョン 29124) +++ vm.c (作業コピー) @@ -1893,7 +1893,7 @@ m_core_define_method(VALUE self, VALUE c REWIND_CFP({ vm_define_method(GET_THREAD(), cbase, SYM2ID(sym), iseqval, 0, rb_vm_cref()); }); - return Qnil; + return sym; } static VALUE @@ -1902,7 +1902,7 @@ m_core_define_singleton_method(VALUE sel REWIND_CFP({ vm_define_method(GET_THREAD(), cbase, SYM2ID(sym), iseqval, 1, rb_vm_cref()); }); - return Qnil; + return sym; } static VALUE =end -- http://bugs.ruby-lang.org/