Project

General

Profile

Feature #15419

Updated by shuber (Sean Huber) about 1 year ago

Tapping methods without any arguments already has nice shorthand via `Symbol#to_proc`:

```ruby
object.tap { |o| o.example }
# vs
object.tap(&:example)
```

Unfortunately once other arguments are involved we have to switch back to the longer form:

```ruby
array.merge(other).tap { |a| a.delete(object) }
```

[This patch introduces](https://github.com/ruby/ruby/pull/2050) patch](https://github.com/ruby/ruby/pull/2050) introduces a convenient and familiar shorthand for these cases which behaves similar to `Kernel#send`:

```ruby
array.merge(other).tap(:delete, object)
```

Calling tap without any arguments or block still raises LocalJumpError

```ruby
3.tap #=> LocalJumpError: no block given
```

---

**Pull request**: https://github.com/ruby/ruby/pull/2050

Back