Просмотр поста

.
No-Tactic

геттеры и сеттеры
допустим, наш обьект имеет несколько свойств, которые задаются в initialize
по умолчанию эти свойства нельзя ни получить ни изменить

class User

  def initialize(options)
    @name = options[:name] # с собачкой пишется инстансная переменная
    @age  = options[:age]
  end

  def name # геттер
    @name
  end

  def name=(n) # сеттер
    @name = n
  end

  def age
    @age
  end

  def age=(a)
    @age = a
  end

end


но такой способ, имхо, неудобен/ т.к если много свойств, которые нужно получить и записать, будет очень много кода
есть способ проще:
class User

  def initialize(options)
    @name = options[:name]
    @age  = options[:age]
    @weight = options[:weight] # третье свойство для полноты примера
  end

  attr_reader :name  # позволяет читать свойство @name
  attr_writer :weight # позволяет перезаписать @weight
  attribute_accessor :age # позволяет и считать и записать @age

end