12/08/2018, 14:13

Accessors trong ruby

Đối với một lập trình viên, getter và setter là các method rất quan trọng để truy cập và xử lý các thuộc tính của 1 class. Ở ruby, việc truy cập này được gọi chung là accessors. accessors gồm có readers và writers. Dưới đây là 1 cách dễ hiểu về chúng: class Fruit def set_kind k ...

Đối với một lập trình viên, getter và setter là các method rất quan trọng để truy cập và xử lý các thuộc tính của 1 class. Ở ruby, việc truy cập này được gọi chung là accessors. accessors gồm có readers và writers. Dưới đây là 1 cách dễ hiểu về chúng:

class Fruit
    def set_kind k
        @k = k #writers
    end
    def get_kind
        @k #readers
    end
end
fruit = Fruit.new #><Fruit:0x000000023fc490>
fruit.set_kind :apple
puts fruit.get_kind #>apple

Với ruby, ta có thể định nghĩa readers và writers một cách tiện lợi hơn để sử dụng như sau:

class Fruit
  def kind=(k)
    @k = k
  end

  def kind
    @k
  end
end
fruit = Fruit.new #<Fruit:0x000000008dc098>
fruit.kind="banana" #>banana

Để giải quyết việc các biến instance cần nhiều hàm accessors , ruby cung cấp shortcut attr_accessor để thay thế việc ta phải khai báo hàm writers và readers . Cách sử dụng shortcut:

class Fruit
    attr_accessor :kind, :animal
    def wow
        "#{animal} eating #{kind}"
    end
end
f = Fruit.new
f.animal = "Rabbit"
f.kind = "carrot"
f.wow #>Rabbit eating carrot

Hy vọng bài viết của mình có thể giúp các bạn mới học về ruby không bị bỡ ngỡ về ngôn ngữ này !

0