Project

General

Profile

Actions

Feature #9453

closed

Return symbols of defined methods for `attr` and friends

Added by jballanc (Joshua Ballanco) almost 8 years ago. Updated almost 5 years ago.

Status:
Rejected
Priority:
Normal
Target version:
-
[ruby-core:60112]

Description

With Ruby 2.1 returning a symbol from def and define_method, that leaves attr, attr_reader, attr_writer, and attr_accessor as ways to define methods that still return nil. This is unfortunate, because it prevents the use of method decorators developed to work with def from also working with the attr* methods. Because these mechanisms can define more than one method, the return values would need to be arrays of symbols.

For an example of how this could be useful in real-world code, consider this sample from James Edward Gray II's Warehouse Keeper example (https://github.com/JEG2/warehouse_keeper):

attr_reader :images, :key_map, :window, :screen_manager, :animations
private     :images, :key_map, :window, :screen_manager, :animations

if attr_reader returned symbols, then this could be simplified to:

private *attr_reader(:images, :key_map, :window, :screen_manager, :animations)

I've attached a patch that implements this change and includes a few tests. For those who use git, I've also submitted this as a pull request here: https://github.com/ruby/ruby/pull/517


Files

attr_rv.patch (3.23 KB) attr_rv.patch Patch to add return values to attr* methods jballanc (Joshua Ballanco), 01/26/2014 05:51 PM

Related issues

Related to Ruby master - Feature #11541: Let attr_accessor, _reader & _writer return symbols of the defined methodsClosedActions
Has duplicate Ruby master - Feature #13560: Module#attr_ methods return reasonable valuesClosedActions
Actions

Also available in: Atom PDF