2017-06-05 63 views
1

我有一個關於在Ruby中引用類變量的最佳方法的問題。Ruby self.name或@name

這是一類我做:

class Person 
    attr_accessor :name 

    def initialize(name) 
    @name = name 
    end 

    def say_name 
    puts @name 
    end 

    def say_name2 
    puts self.name 
    end 

end 

bob = Person.new("Bob") 

bob.say_name 
=> "Bob" 

bob.say_name2 
=> "Bob" 

兩者的「say_name」的方法似乎按預期方式工作。爲什麼使用@variable和self.variable?

+0

在第二種方法中,甚至不需要'self.',除非您正在分配,它可以只是'name' ... –

+0

您的代碼中沒有任何類變量。 – sawa

回答

1

attr_accessor :name只是創建方法name,返回@name變量,像

def name 
    @name 
end 

,而不是你。

沒有attr_accessorself.namename將無法​​正常工作並返回NoMethodError@name將在所有情況下工作。

相關問題