我正在閱讀的紅寶書已經讓我困惑了一下。如果我執行以下操作,我完全理解代碼拋出錯誤的原因;ruby中的類方法語法
class Person
def show_name
puts @name
end
end
person = Person.new
person.show_name
Person.show_name #(note the capital P) this line falls over
它拋出一個錯誤,指出Person類沒有一個叫SHOW_NAME方法,因爲它是一個實例方法。我完全理解這一點。這本書然後拋出這個例子。
class Class
def add_accessor(accessor_name)
self.class_eval %Q{attr_accessor :#{accessor_name}}
end
end
class Person
end
person = Person.new
Person.add_accessor :name #note the capital P
Person.add_accessor :age #capital P here too
person.name = "Mikey"
person.age = 30
puts person.name
並繼續說明你可以動態地將方法添加到類中。我不明白的是,爲什麼當方法本身沒有被定義爲這樣的時候,我突然被允許將「add_accessor」方法稱爲類方法(使用大寫字母P)我認爲所有的類方法都必須這樣聲明?
class Math
def self.PI
3.141
end
end
puts Math.PI
有人能夠啓發我嗎?
介意。正式。嗚呼哀哉! –