0
Q
類別變量
A
回答
4
實例級別變量區域爲類的每個實例重新創建。例如,對於Foo
的每個實例,變量@id
應該是唯一的。但是,對於每個類型的實例,可能有一些值應該是相同的。在這種情況下,類變量會更合適。
類別級變量的一個重要副作用是它們在派生類中共享以及。這意味着改變'Foo'子類的值也會改變'Foo'對象的值。這可能是你想要的,但找出困難的方式可能有點令人驚訝。
例如:
class Foo
@@some_var = 1
def bar
puts(@@some_var)
end
end
class Baz < Foo
def perhaps_unexpected
@@some_var = 10
Foo.new.bar #prints '10'
end
end
1
當你想在類的所有實例共享變量使用類變量,當你想用一個實例變量,每個實例有它自己的非共享變量。
相關問題
- 1. 類別變量與方法變量
- 2. 類級別變量python
- 3. 類別的OOP變量
- 4. laravel undefine變量:類別
- 5. Wordpress query_post變量類別
- 6. 類別和實例變量
- 7. 類別變量未設置
- 8. R類別變量值
- 9. 類變量和類實例變量之間的區別?
- 10. 類別級別定義的類別變量和變量之間的區別是什麼
- 11. Codeigniter類別和子類別函數並傳遞給smarty變量
- 12. Objective-C:類別中的實例變量
- 13. 類別變量不停留設置(PHP)
- 14. 最佳實踐類級別變量
- 15. 更新不同類別中的變量
- 16. 類別的變量方法名稱
- 17. 參考不同類別的變量
- 18. 使用類別作爲新變量?
- 19. 單變量類別散點圖熊貓
- 20. 可變數量的類別/複選框
- 21. Ruby類級別的實例變量
- 22. 獲取不同類別的變量
- 23. 從另一個類別指定變量
- 24. 從另一個類別採取變量
- 25. 處理變量類別層次結構
- 26. 類別屬性變量未更新
- 27. 取消定義變量類別
- 28. SPSS AnswerTree如何識別變量類型?
- 29. ArrayList無法識別子類變量
- 30. Cocoa類中變量聲明的區別
此代碼打印3和零。爲什麼? 'code'class MyClass的 \t @@全球= 3 \t @local = 7 \t \t DEF my_print \t \t放@@全球 \t \t提出@local \t端 端 OBJ = MyClass.new obj.my_print'code' – user413881 2011-06-06 19:57:53
因爲你不能在類作用域中初始化成員變量,所以你需要在一個方法內部(通常是構造函數'initialize')完成它。從文檔中:'一個實例變量的名字以@開始,其範圍限制在self指向的任何對象上.'在你的代碼中'self'不引用該類作用域,所以該變量未初始化。 – 2011-06-06 20:05:18
謝謝你的解釋 – user413881 2011-06-06 20:13:55