07/01/2019, 14:54

Getter Setter in Ruby

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 ...

  • 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é             </div>
            
            <div class=
0