From: "baweaver (Brandon Weaver)" Date: 2021-11-18T06:57:57+00:00 Subject: [ruby-core:106123] [Ruby master Feature#12495] Make "private" return the arguments again, for chaining 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: