Как вызвать attr_accessor attribtue внутри класса (но вне каких-либо методов)? - PullRequest
0 голосов
/ 09 мая 2009

Я использую HTTParty для своего класса и хочу использовать метод default_params. Однако я также хочу иметь возможность устанавливать атрибуты при создании экземпляра моего класса с помощью initialize.

class MyClass
  include HTTParty

  attr_accessor :param1, :param2

  # This or @param1 doesn't work.
  default_params :param1 => self.param1, :param2 => self.param2

  def initialize(param1, param2)
    self.param1 = param1
    self.param2 = param2
  end
end

Так я могу сделать

m = MyClass.new('hey', 'hello')

вместо

m = MyClass.new
m.param1 = 'hey'
m.param2 = 'hello'

Но я бы хотел использовать атрибуты с default_params. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 09 мая 2009

Взгляните на метод initialize в файле этого примера из репозитория Github. Я не использовал HTTParty раньше, но похоже, что вы после.

Кроме того, из вашего примера похоже, что вы смешиваете методы класса и переменные экземпляра.

1 голос
/ 09 мая 2009

Для этого в Ruby есть синтаксис в объявлениях методов.

class MyClass
  attr_reader :param1, :param2
  def initialize(param1 = "default", param2 = 5) 
    @param1, @param2 = param1, param2
  end
end

MyClass.new.param2
# => 5

Я никогда не использовал HTTParty, и я не уверен, что делает метод default_params, поэтому я не знаю, если это то, что вы ищете.

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