Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用类作为散列的键?_Ruby - Fatal编程技术网

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