0
A
回答
2
自我總是指當前object.Check以下例如: -如此命名是因爲它們具有範圍內
class Test
def test
puts "At the instance level, self is #{self}"
end
def self.test
puts "At the class level, self is #{self}"
end
end
Test.test
#=> At the class level, self is Test
Test.new.test
#=> At the instance level, self is #<Test:0x28190>
對象變量,並關聯到 ,目前object.an對象變量,然後可以從該對象內的任何其他方法訪問。
類變量對於存儲與某個類的所有對象 有關的信息特別有用。
4
@@ var是類變量,它在類和該類的所有實例之間共享。您可以從類方法和實例方法訪問此變量。
class C
@@a = 1
def self.m1 # define class method (this is similar to def C.m1, because self will evaluate to C in this context)
@@a
end
def m2 # define instance method
@@a
end
end
C.m1 # => 1
C.new.m2 # => 1
@var是類實例變量。通常情況下,您可以從類方法訪問此實例變量。
class C
@a = 1
def self.m1
@a
end
def m2
# no direct access to @a because in this context @a will refer to regular instance variable, not instance variable of an object that represent class C
end
end
C.m1 # => 1
這些變量可能會造成混亂,你應該永遠知道你定義實例變量@...
上下文 - 它可能在這代表了一類或可能是常規的對象的實例對象的實例來定義。
1
直觀地說,實例變量用於跟蹤每個對象的狀態。另一方面,類變量用於跟蹤類的所有實例的狀態。例如。您可以使用@@算把這個類的已被實例化,像這樣的對象數量的軌道:
class User
@@count = 0
attr_reader :name
def initialize(name)
@@count += 1
@name = name
end
end
User.count爲您提供了迄今已實例化的用戶數量。 user = User.new('Peter')
將User.count增加1,user.name
返回Peter。
相關問題
- 1. 在紅寶石一類
- 2. 手動添加一個紅寶石
- 3. 從紅寶石新手返回命令
- 4. 紅寶石新手的strftime Time.Now
- 5. 紅寶石上軌道協會新手
- 6. 紅寶石產量新手問題
- 7. 紅寶石新手路由錯誤
- 8. 紅寶石:從這個類
- 9. 紅寶石+鈦手機
- 10. 你如何做一個就地放在紅寶石
- 11. 新手紅寶石和一個小卡住if語句
- 12. 紅寶石:「類是一個對象,對象是類」
- 13. 紅寶石寶石錯誤「谷歌是不是一個模塊/類」
- 14. 紅寶石「基」類
- 15. 紅寶石散列在紅寶石
- 16. 紅寶石 - 在類方法
- 17. 更新紅寶石寶石1.8.5
- 18. 錯誤更新紅寶石寶石sequel_pg
- 19. 需要一個紅寶石文件在一個紅寶石文件
- 20. Plivo紅寶石寶石類衝突
- 21. 啓動紅寶石 - 我的第一個紅寶石網站
- 22. 紅寶石鞋執行另一個紅寶石程序
- 23. 是什麼在紅寶石
- 24. 什麼是在紅寶石
- 25. 什麼是「?」在紅寶石
- 26. 在紅寶石
- 27. 在紅寶石
- 28. 在紅寶石
- 29. 在紅寶石
- 30. 在紅寶石