這裏定義的屬性@color
在哪裏?推測在構造函數中的賦值?如果是這種情況,如果一個類型有多個構造函數,其中一個沒有賦值給@color
?Ruby - 這裏的屬性定義在哪裏?
class Baz
def initialize(color)
@color = color
end
def color
@color
end
def color=(value)
@color = value
end
end
注:在Ruby中,你不能定義多個初始化的一類。您可以使用默認值定義初始化程序,例如'def初始化(color ='FFFFFF')'。當您將調用'Baz.new'不帶參數,則默認值將被分配到'@ color' –
我發佈了一個回答你的問題,但我認爲這也非常有用單獨注意到,Ruby有一個漂亮的圖案,很容易讓您可以在不暴露類內部的情況下爲您的實例變量創建健壯的接口。看到這裏對細節:http://www.rubyist.net/~slagell/ruby/accessors.html –
使用這些屬性訪問器的一個很好的優點是,它可以讓你以後手動定義的方法,如果你需要添加比簡單的getter/setter更復雜的功能。它也保存了打字。在您的示例代碼中,您可以只寫'attr_accessor:color'並自動獲取setter/getter方法,而不是定義'color'和'color ='方法。 –