From: nobu@... Date: 2016-06-16T08:40:32+00:00 Subject: [ruby-core:76049] [Ruby trunk Feature#12495][Feedback] Make "private" return the arguments again, for chaining Issue #12495 has been updated by Nobuyoshi Nakada. Status changed from Open to Feedback Only `private`, not `public`, `protected` and `module_function`? Herwin Quarantainenet wrote: > The patch is written for Ruby 2.3.1, just because the tests were broken in trunk. How broken? ---------------------------------------- Feature #12495: Make "private" return the arguments again, for chaining https://bugs.ruby-lang.org/issues/12495#change-59252 * Author: Herwin Quarantainenet * Status: Feedback * Priority: Normal * Assignee: ---------------------------------------- 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: