我刚刚意识到我使用类类型作为哈希变量的键: (不是这个)
def add_to_cache(obj)
@cache[obj.class] = [] unless @cache.has_key? obj.class
@cache[obj.class] << obj
end
所以我很好奇是否有人可以解释它。有一些缺点吗?它是如何存储在内存中的?我应该将它(obj.class)转换为Symbol或String吗?
答案 0 :(得分:4)
在ruby中,您可以将任何对象作为哈希的键。调用对象的方法hash
进行实际散列。我假设这个方法已经足够优化并且足够Class
。不需要在此处将类转换为字符串或符号。
答案 1 :(得分:2)
我猜你的目标可能是跟踪某个班级的所有实例。如果是这种情况,那么您不需要也不应该手动缓存它们。要获取类klass
的所有实例,请执行以下操作:
ObjectSpace.each_object(klass).to_a