Ruby 使用类作为散列的键?
我刚刚意识到我正在使用类类型作为散列变量的键: (不完全是这样)Ruby 使用类作为散列的键?,ruby,Ruby,我刚刚意识到我正在使用类类型作为散列变量的键: (不完全是这样) def添加到缓存(obj) @cache[obj.class]=[]除非@cache.has_key?对象类 @在ruby中,缓存[obj.class]可以使任何对象成为散列的键。为实际哈希调用对象的方法hash。我假设这个方法对于类来说已经足够优化了。这里不需要将类转换为字符串或符号 我猜您的目标可能是跟踪某个类的所有实例。如果是这种情况,那么您不需要也不应该手动缓存它们。要获取类klass的所有实例,请执行以下操作: Obje
def添加到缓存(obj)
@cache[obj.class]=[]除非@cache.has_key?对象类
@在ruby中,缓存[obj.class]可以使任何对象成为散列的键。为实际哈希调用对象的方法hash
。我假设这个方法对于类
来说已经足够优化了。这里不需要将类转换为字符串或符号 我猜您的目标可能是跟踪某个类的所有实例。如果是这种情况,那么您不需要也不应该手动缓存它们。要获取类klass的所有实例,请执行以下操作:
ObjectSpace.each_object(klass).to_a
不。类本身无论如何都是一个对象。ruby中的任何东西都是对象,您可以自由使用它们。这是一个非常简单的示例,只是为了解释我自己,谢谢,很高兴知道这样的事情。我喜欢鲁比。不管怎样,你知道使用这个的效果如何吗?
ObjectSpace.each_object(klass).to_a