Getter and Setter method in Ruby
Bài viết này mình sẽ nói về getter & setter method và attribute trong Ruby Getter method khi lấy giá trị của instance variable Setter method khi muốn thay đổi giá trị của instance variable Xem ví dụ dưới đây: class User def initialize(name) @name = name end # getter method ...
Bài viết này mình sẽ nói về getter & setter method và attribute trong Ruby
Getter method khi lấy giá trị của instance variable
Setter method khi muốn thay đổi giá trị của instance variable
Xem ví dụ dưới đây:
class User def initialize(name) @name = name end # getter method def getter_name @name end # setter method def setter_name=(name) # Đây là cách viết của setter method @name = name end end user = User.new('Paul') # Lấy tên user bằng cách dùng getter method user.getter_name # Tên lúc này là Paul # Thay đổi tên user bằng cách dùng setter method user.setter_name = "Brian" # Tên lúc này là Brian
Qua ví dụ trên bạn thấy để viết method getter & setter nó khá là dài. Vậy có cách nào rút ngắn code hơn không? Câu trả lời là có
Ruby có cung cấp cho bạn các loại attributes sau giúp bạn có thể sử dụng nó dễ dàng hơn:
attr_reader:
Cái này tương đương với getter method
attr_writer:
Cái này tương đương với setter method
attr_accessor:
Nếu đã có attr đại diện cho getter và setter method. Vì sao lại có attr_accessor này?
attr_accessor là kết hợp giữa attr_reader && attr_writer có nghĩa là 1 method vừa có tính chất của getter & setter
Cách sử dụng của 3 attributes trên là bạn phải đặt tên của attribute trùng mới tên của variable.
Ví dụ trên dùng với attributes
class Item attr_reader :getter_item attr_writer :setter_item attr_accessor :accessor_item def initialize(getter_item, setter_item, accessor_item) @getter_item = getter_item @setter_item = setter_item @accessor_item = accessor_item end end item = Item.new('this is a getter', 'this is a setter', 'this is an accessor') item.getter_item item.setter_item = "update value for setter" item.accessor_item = "update value for accessor"