2016-11-29 64 views
0

如果我有一个打印使用at symbol @实例变量var我应该引用var的方法的自定义类?何时使用符号来引用实例变量,何时不使用?

TL; DR:我应该使用方法puts_readerputs_ivar为什么?

class Foo 
    attr_reader :var 

    def initialize 
    @var = "foobar" 
    end 

    def puts_reader 
    puts var 
    end 

    def puts_ivar 
    puts @var 
    end 
end 
+0

实例变量是* *总是用'引用@',局部变量没有'@'。 'attr_reader'只是为你添加一个实例***方法***'var',所以它既不是实例变量也不是本地变量。 –

+0

TL; DR的稍微可疑使用:) –

+0

正如您已经显示的那样,您可以使用'@ var'或'var'(提供您的包装方法设置)引用'@ var'。这取决于你,@var稍微快一些,但它并不重要。 –

回答

0

在你的代码,你可以只使用var因为attr_reader这就是说,

def var 
    @var 
end 
+0

哦,所以var使用隐式方法'var',因为'attr_reader:var'? –

+0

是的,正是:) – Ursus