There are a number of reasons I use them, but the most obvious is that a
misspelled accessor method will raise NoMethod error, whereas a misspelled
@ivar reference will silently return nil.



On Mon, Feb 3, 2014 at 1:44 PM, <sawadatsuyoshi / gmail.com> wrote:

> Issue #9453 has been updated by Tsuyoshi Sawada.
>
>
> What is the point of defining a private accessor method? You can directly
> refer to the instance variables without using accessors.
>
> ----------------------------------------
> Feature #9453: Return symbols of defined methods for `attr` and friends
> https://bugs.ruby-lang.org/issues/9453#change-44898
>
> * Author: Joshua Ballanco
> * Status: Open
> * Priority: Normal
> * Assignee:
> * Category: core
> * Target version:
> ----------------------------------------
> 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)
>
>
> --
> http://bugs.ruby-lang.org/
>



-- 
Avdi Grimm
http://avdi.org

I only check email twice a day. to reach me sooner, go to
http://awayfind.com/avdi