Method: Module#attr_setter
- Defined in:
- lib/core/facets/module/attr_setter.rb
#attr_setter(*args) ⇒ Object
Create an attribute method for both getting and setting an instance variable:
attr_setter :a
is equivalent to:
def a(*args)
if args.size > 0
@a = args[0]
self
else
@a
end
end
CREDIT: Trans
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/core/facets/module/attr_setter.rb', line 21 def attr_setter(*args) code, made = '', [] args.each do |a| code << %{ def #{a}(*args) args.size > 0 ? ( @#{a}=args[0] ; self ) : @#{a} end } made << "#{a}".to_sym end module_eval code made end |