0

Getter và Setter trong ruby

1.Tìm hiểu về getter và setter.

  • 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é 😃.
   class Person
       attr_reader :name # tạo method read(getter)
       attr_writer :name # tạo method write(setter) 
   end
   
   class Person
       attr_accessor :name # tạo 2 method getter và setter
   end
   person = Person.new
   person.name = "Anh"
   person.name # => "Anh"

2. Thực hành ví dụ

  • Tiến hành 1 ví dụ khác để hiểu hơn về nó nhé 😄.
  class Person
       attr_accessor :name # Tạo 2 method getter và setter
       def welcome
           "Hello #{@name}"
       end
   end
   person = Person.new
   person.name = "Anh"
   person.welcome # => "Hello Anh"
  • Giờ chúng ta có thể sử dụng nó 1 cách ok phải không nào 😄.
  • Đây là chia sẻ của mình về getter và setter trong ruby.
  • Bạn có thể tham khảo thêm các nguồn khác và góp ý cho mình thêm nếu có sai sót nhé 😄.
  • Cám ơn các bạn đã dành thời gian đọc bài chia sẻ của mình nhé.!!!

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí