Accessors
# Ruby simplifies the creation of getters and setters with a little metaprogramming and the methods attr, attr_reader, attr_writer, and attr_accessor, all from the Module class.
# By supplying the attr method, Ruby provides a way to quickly create the equivalent of six lines of code with a single line.
# The method attr creates a single getter method, named by a symbol, with an optional setter method (if the second argument is true)
#!/usr/bin/env ruby
class Dog
attr :bark, true
end
Dog.instance_methods - Object.instance_methods # => ["bark", "bark="]
dog = Dog.new
dog.bark="Woof!"
puts dog.bark # => Woof!
# single line attr :bark, true is equivalent to writing out the bark and bark= methods in six lines of code:
class Dog
def bark
@bark
end
def bark=(val)
@bark = val
end
end
Related examples in the same category