Project

General

Profile

Actions

Feature #13172

closed

Method that yields object to block and returns result

Added by Nondv (Dmitry Non) about 7 years ago. Updated almost 7 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:79321]

Description

Hi everyone!

There's a #tap method, that yields reciever to block and returns reciever itself.
I would like to see method, which would return yield's result.

some_object.some_method.pass { |x| x && another_object.another_method(x) }

I've seen many code samples that had a some "middle-variables" to store #some_method result.
Those variables are useless after few lines of code, so it would be great to create them in a limited scope (block).

P.S. I am very sorry for my english. I hope you understood me:D
P.P.S. I think there should be a better name than pass for such method

UPD. I've created a PR to see if #pass fits: https://github.com/ruby/ruby/pull/1521

$ irb
>> Time.now.pass { |t| t.sunday? ? 'Yay!' : ':(' }
==> ":("

Files

method_pass.patch (904 Bytes) method_pass.patch Nondv (Dmitry Non), 02/17/2017 11:55 AM

Related issues 3 (0 open3 closed)

Is duplicate of Ruby master - Feature #10095: Object#asClosedActions
Is duplicate of Ruby master - Feature #11717: Object#trap -- pass object to block and return resultClosedActions
Is duplicate of Ruby master - Feature #12760: Optional block argument for `itself`ClosedActions

Updated by Nondv (Dmitry Non) about 7 years ago

  • Description updated (diff)

Updated by Nondv (Dmitry Non) about 7 years ago

  • Subject changed from Object#pass (yield object to block and return result) to Method that yields object to block and returns result

Updated by Nondv (Dmitry Non) about 7 years ago

Oh, I forgot to notice. There's #instance_eval method, which do the job, but it evaluates block in object context, so it doesn't fit

Updated by Nondv (Dmitry Non) about 7 years ago

  • Tracker changed from Bug to Feature

Updated by Nondv (Dmitry Non) about 7 years ago

Matthew Kerwin wrote:

Well, obviously I can't use searching:D
So, what about naming?

#12760 suggests yield_self name, but imho it's too long.

Check https://github.com/ruby/ruby/pull/1521 pls.

Actions #7

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

Actions #8

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

  • Is duplicate of Feature #11717: Object#trap -- pass object to block and return result added
Actions #9

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

  • Is duplicate of Feature #12760: Optional block argument for `itself` added

Updated by Nondv (Dmitry Non) about 7 years ago

  • Description updated (diff)

Updated by Nondv (Dmitry Non) about 7 years ago

  • Description updated (diff)

Updated by Nondv (Dmitry Non) about 7 years ago

  • Description updated (diff)

Updated by Nondv (Dmitry Non) about 7 years ago

  • Description updated (diff)

Updated by matz (Yukihiro Matsumoto) about 7 years ago

I don't think "pass" is a good name for it.

Matz.

Actions #16

Updated by nobu (Nobuyoshi Nakada) almost 7 years ago

  • Status changed from Open to Closed

Applied in changeset trunk|r58528.


object.c: Kernel#yield_self

  • object.c (rb_obj_yield_self): new method which yields the
    receiver and returns the result.
    [ruby-core:46320] [Feature #6721]
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0