# 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)
attr :bark, true
Dog.instance_methods - Object.instance_methods # => ["bark", "bark="]
dog = Dog.new
puts dog.bark # => Woof!
# single line attr :bark, true is equivalent to writing out the bark and bark= methods in six lines of code:
@bark = val
Related examples in the same category