Вы смесительный экземпляр и метод класса в вашем примере. Если это действительно то, что вы хотите, то вы должны определить аксессор с attr_reader
:
class Test
def initialize(params)
@has_test = params[:has_test]
@limit_test = params[:limit_test]
end
attr_reader :has_test
attr_reader :limit_test
def self.method1(params)
obj = Test.new(params)
p obj.has_test
p obj.limit_test
end
end
Test.method1(has_test: 1, limit_test: 3)
Это экземпляр/класс-метод является ошибка, то этот пример может помочь вам:
class Test
def initialize(params)
@has_test = params[:has_test]
@limit_test = params[:limit_test]
end
def method1()
p @has_test
p @limit_test
end
end
obj = Test.new(has_test: 1, limit_test: 3)
obj.method1
Если вы определяете также аксессоров, как в первом коде, то вы снова получаете доступ извне класса.
Только в случае, если вы не хотите, чтобы читатель, смотри также Access instance variable from outside the class
@lurker в то время как технически '' @@ правильный синтаксис большую часть времени, как это кажется в данном случае класс случае переменных будет вместо переменных класса, хотя я согласен, что он просто ошибается и хочет получить доступ к переменным экземпляра для самого экземпляра. – engineersmnky
@engineersmnky да, я согласен. Я не поймал это до моего комментария. – lurker
Ruby использует '#' для комментариев, а не '//'. –