From d53ee008911b5c3b22cff1566a9ef7e7d4cbe183 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 30 May 2018 08:24:52 +0000 Subject: object.c: Add a new alias `then` to `Kernel#yield_self`; [Feature #14594] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- object.c | 4 +++- spec/ruby/core/kernel/yield_self_spec.rb | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/object.c b/object.c index 7a9ee001e6..036e07b64f 100644 --- a/object.c +++ b/object.c @@ -564,12 +564,13 @@ rb_obj_size(VALUE self, VALUE args, VALUE obj) /* * call-seq: + * obj.then {|x| block } -> an_object * obj.yield_self {|x| block } -> an_object * * Yields self to the block and returns the result of the block. * + * 3.next.then {|x| x**x }.to_s #=> "256" * "my string".yield_self {|s| s.upcase } #=> "MY STRING" - * 3.next.yield_self {|x| x**x }.to_s #=> "256" * */ @@ -4065,6 +4066,7 @@ InitVM_Object(void) rb_define_method(rb_mKernel, "dup", rb_obj_dup, 0); rb_define_method(rb_mKernel, "itself", rb_obj_itself, 0); rb_define_method(rb_mKernel, "yield_self", rb_obj_yield_self, 0); + rb_define_method(rb_mKernel, "then", rb_obj_yield_self, 0); rb_define_method(rb_mKernel, "initialize_copy", rb_obj_init_copy, 1); rb_define_method(rb_mKernel, "initialize_dup", rb_obj_init_dup_clone, 1); rb_define_method(rb_mKernel, "initialize_clone", rb_obj_init_dup_clone, 1); diff --git a/spec/ruby/core/kernel/yield_self_spec.rb b/spec/ruby/core/kernel/yield_self_spec.rb index 4aa5335db5..0bcf0660c2 100644 --- a/spec/ruby/core/kernel/yield_self_spec.rb +++ b/spec/ruby/core/kernel/yield_self_spec.rb @@ -20,5 +20,10 @@ ruby_version_is "2.5" do enum.peek.should equal object enum.first.should equal object end + + it "has an alias `then`" do + object = Object.new + object.then { 42 }.should equal 42 + end end end -- cgit v1.2.3