Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
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
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"







