attr_accessor внутренний вид - PullRequest
1 голос
/ 02 марта 2012

Я новичок в Ruby

мы можем сказать, что attr_accessor :bark

- сахарное покрытие для

 def bark
    @bark
  end

  def bark=(val)
    @bark = val
  end

Что было бы то же самое, если задано несколько параметров это 1009 *

attr_accessor *args
    args.each { |attr|
     def attr
            @attr
          end

          def attr=(val)
            @attr= val
          end
    }

и если да, то как я могу использовать то же самое с инициализацией всех данных параметров также

и class_eval (Meta OOP) с динамическим attr + random_str ?

1 Ответ

1 голос
/ 12 мая 2012

Материал

attr_accessor *args
  args.each { |attr|
   def attr
     @attr
   end

   def attr=(val)
     @attr= val
   end
 }

не будет работать. Было бы создать метод "attr", который возвращает значение переменной экземпляра "@attr". Я думаю, что это не то, что вы хотите сделать, верно? Вы должны сделать

args.each do |arg|
  self.define_singleton_method arg do self.instance_variable_get arg end
end

для геттера и почти то же самое для сеттера. Я не знаю, что вы имеете в виду под

и если да, то как я могу использовать то же самое с инициализацией всех данных параметров? а в class_eval (Meta OOP) с динамическим attr + random_str?

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...