0

如何搜索磁悬浮对象数组?Maglev 很棒,但它似乎没有任何查询功能。有没有为此的外部库?

4

3 回答 3

2

底层的 MagLev VM 已经有一段时间的索引支持了。在http://github.com/MagLev/maglev/tree/master/examples/persistence/indexing/中有一个索引和查询集合的示例

我们不得不暂时关闭索引,但我们将在下一个版本(可能在几天后)中通过更新的示例将其打开。

于 2010-02-17T22:55:41.140 回答
1

Maglev 1.0.0IdentitySet现在已经有了,这可能会成为一个非常强大的查询机制,具有多属性搜索和索引维护,但是目前它还不是很“像 Ruby”。当您第一次使用静态方法定义类时,您将必须定义您想要为其定义索引的所有属性,该静态方法将在第二次调用时引发异常(因此您必须添加一个单独的保护来防止它从第二次加载类时运行)。self.__fixed_instvars :@inst_var1, :@inst_var2, ...

从 Smalltalk 的角度来看,这似乎是可以理解的,其中类具有版本并保持静态,但是它并不完全适合随着时间演变的一个“当前”类定义的 Maglev 情况。

如果你的问题真的只是查询一个数组,你总是可以使用为大多数数据结构实现的 Ruby 选择方法,但它通常只通过遍历所有对象而不使用索引来工作。

于 2012-02-05T00:11:36.080 回答
1

我意识到这有点晚了,但是...

首先,没有“MagLev 数组”之类的东西,它只是一个 Ruby 数组。由于它只是一个 Ruby 数组,因此您可以使用Array#selectand Array#detect。正如彼得所说,内置索引(已重新打开),但索引仅适用于无序集合。

于 2012-11-19T04:22:18.853 回答