Value of def-expr

Issue #3753 has been updated by matz (Yukihiro M.).

Assignee changed from matz (Yukihiro M.) to usa (Usaku NAKAMURA)

We accept this change for 2.1 in the developers’ meeting on 2013-07-27.
We also think define_method() should return symbols as well.

Matz.


Feature #3753: value of def-expr

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