Issue #12495 has been updated by baweaver (Brandon Weaver).


matz (Yukihiro Matsumoto) wrote in #note-7:
> Sounds OK. Accepted. The side effect should be trivial.
> 
> Matz.

Oh lovely, very fond of this idea, and had mentioned it as a warning in some of my writings around it. This will definitely be great for consistency. Give me a bit and I can have a piece out on it later, think it'll go for 3.1?

----------------------------------------
Feature #12495: Make "private" return the arguments again, for chaining
https://bugs.ruby-lang.org/issues/12495#change-94720

* Author: herwinw (Herwin Quarantainenet)
* Status: Open
* Priority: Normal
----------------------------------------
Ruby 2.1 introduced the feature to make `def foo` return the symbol, so this could be used by things like `private` (see #3753):

```ruby
private def foo() end
```

You could use the same method to create your own decorators (name borrowed from Python)

```ruby
def cached(name)
  # Rewrite method to include a cache
  return name
end

private cached def foo() end
```

Currently, this would work but `cached private def foo()` would not. `private` (and all other modifier functions) return the class on which it was called. It would be nice to exterminate those order-dependencies.


The attached patch fixes this. It includes three modes:

No arguments: return `nil`:

```ruby
private
  def foo() end
```

One argument: return the symbol. The would be the most common use case for this example.

```ruby
private def foo() end
private :bar
```

Multiple arguments: return an array of the arguments:

```ruby
private :foo, :bar
```

---Files--------------------------------
ruby_return_symbols_in_private.diff (1.19 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>