Ruby有沒有什麼方法可以知道它有多少實例存在,並且可以列出它們?如何列出從Ruby中的類創建的所有對象?
下面是一個簡單類:
class Project
attr_accessor :name, :tasks
def initialize(options)
@name = options[:name]
@tasks = options[:tasks]
end
def self.all
# return listing of project objects
end
def self.count
# return a count of existing projects
end
end
現在我創建這個類的項目對象:
options1 = {
name: 'Building house',
priority: 2,
tasks: []
}
options2 = {
name: 'Getting a loan from the Bank',
priority: 3,
tasks: []
}
@project1 = Project.new(options1)
@project2 = Project.new(options2)
我想什麼是有類方法像Project.all
和Project.count
返回的列表和當前項目的數量。
我該怎麼做?
你是否需要在類中包含ObjectSpace以使其工作? – onebree
@HunterStevens不,我們不是將模塊混入我們的課,只是調用它的一個方法 –
**警告**:這個解決方案可以很容易地在腳下自我射擊。如果你不保留對你的對象的引用(例如,如果你沒有將結果賦值給'Project.new'),它們將在某個時間點被垃圾回收,'ObjectSpace.each_object'顯然會停止報告它們。使用'@@ instances = []'來代替rohit89的答案,通過保留對這些對象的引用來解決這個問題。 – vmarquet