你混合实例,并在您的示例类方法。 如果这真的是你想要的东西,那么你必须与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使用'#'来注释,而不是''''。 –