- Chúng ta sẽ thực hành trên 1 class để có thể hiểu rõ hơn về Getter và Setter:
class Person
end
person = Person.new
person.read #=> Không có method lỗi.
- Bây giờ chúng ta sẽ định nghĩa cho method read:
class Person
def read
@name # chỉ cần trả về 1 instance variable @name
end
end
person = Person.new
person.read # => nil
person.write = "Anh" # => Không có method lỗi.
- Từ ví dụ trên ta nhận ra rằng:
- Khi khai báo xong method read, chúng ta có thể đọc được giá trị @name trong Class Person.
- Nhưng không thể gán giá trị vào cho @name vì chúng ta chưa có 1 method để thực hiện điều đó.
- Chúng ta hãy thử định nghĩa để sử dụng được nó nhé:
class Person
def read
@name
end
def write=(str)
@name = str
end
end
person = Person.new
person.write = "Anh"
person.write # => "Anh"
- Thật là hay. Bây giờ chúng ta có thể viết hay đọc được biến @name bằng cách sử dụng 2 method là read và write.
- Nhưng câu hỏi là: Tại sao chúng ta phải luôn mất thời gian để tạo 2 phương thức này mỗi khi phải sử dụng để lấy dữ liệu hoặc ghi dữ liệu.
- Do đó ruby hỗ trợ 1 cách dễ dàng hơn để chúng ta thực hiện nó 1 cách nhanh chóng đó là attr_reader, attr_writer, attr_accessor.
- attr_reader: Giúp ta tạo ra 1 method read giống như chúng ta định nghĩa ở phía trên.
- attr_writer: Tương tự tạo cho chúng ta method write.
- attr_accessor: Tạo ra đồng thời 2 method là read và read. Sử dụng khi bạn muốn cả lấy và ghi dữ liệu.
- Giờ chúng ta sẽ tiến hành thử sử dụng nó nhé