What is the purpose of the ‘attr’ family of methods in Ruby, and how do you use them?
In Ruby, the ‘attr’ family of methods is a set of convenient shortcuts used for defining instance variables and their associated getter and setter methods. These methods are primarily used to encapsulate object attributes, providing controlled access to the internal state of a class.
There are three main ‘attr’ methods in Ruby:
- `attr_reader`: This method allows you to define a read-only getter method for an instance variable. It simplifies the process of accessing the value of an instance variable by generating a method that returns its value. For example, if you use `attr_reader :name`, you can access the `name` instance variable with `object.name`.
- `attr_writer`: This method is used to create a write-only setter method for an instance variable. It allows you to assign values to the instance variable directly. For instance, `attr_writer :name` enables you to set the `name` instance variable with `object.name = “New Name”`.
- `attr_accessor`: This method is a combination of `attr_reader` and `attr_writer`. It generates both a getter and a setter method for an instance variable. With `attr_accessor :name`, you can both read and modify the `name` instance variable using `object.name` and `object.name = “New Name”`.
Using the ‘attr’ family of methods helps in maintaining clean and concise code by reducing the boilerplate code required for getter and setter methods. It also promotes the encapsulation of instance variables, allowing for more controlled access to class attributes and helping to maintain data integrity within objects.