如何搜索磁悬浮对象数组?Maglev很棒,但它似乎没有任何查询功能。有没有什么外部库?
发布于 2010-02-18 06:55:41
底层MagLev VM已经支持索引很长一段时间了。下面是一个在http://github.com/MagLev/maglev/tree/master/examples/persistence/indexing/中索引和查询集合的示例
我们不得不关闭索引一段时间,但我们将在下一个版本中(可能在几天后)启用它,并提供一个更新的示例。
发布于 2012-02-05 08:11:36
Maglev 1.0.0现在有了IdentitySet,这可能会成为一种非常强大的查询机制,具有多属性搜索和索引维护功能,但目前它还不是很“像Ruby”。当您第一次使用静态方法self.__fixed_instvars :@inst_var1, :@inst_var2, ...定义您的类时,您必须定义您想要为其定义索引的所有属性,这将在第二次调用它时抛出一个异常(因此,您必须添加一个单独的保护,以防止它在第二次加载类时运行)。
从Smalltalk的角度来看,这似乎是可以理解的,在Smalltalk中,类具有版本并保持静态,但是它不太适合随着时间的推移而演变的一个“当前”类定义的磁悬浮情况。
如果你的问题真的只是查询一个数组,你总是可以求助于Ruby select-method,它是为大多数数据结构实现的,但它通常只需遍历所有对象,而不使用索引。
发布于 2012-11-19 12:22:19
我知道这有点晚了,但是...
首先,没有“Ruby数组”这样的东西,它只是一个MagLev数组。因为它只是一个Ruby数组,所以您可以使用Array#select和Array#detect。正如Peter所说,有内置的索引(已重新打开),但索引仅在无序集合上可用。
https://stackoverflow.com/questions/2276278
复制相似问题