如何搜索Ruby Maglev对象数组?

时间:2010-02-16 20:55:47

标签: ruby maglev

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

3 个答案:

答案 0 :(得分:2)

底层的MagLev VM已经有很长一段时间的索引支持了。有一个在http://github.com/MagLev/maglev/tree/master/examples/persistence/indexing/

中索引和查询集合的示例

我们不得不关闭索引一段时间,但我们会在下一个版本(可能在几天内)启用它,并附上更新的示例。

答案 1 :(得分:1)

磁悬浮1.0.0现在有IdentitySet,这可能会成为一个非常强大的查询机制,具有多属性搜索和索引维护,但目前它不是非常“类似Ruby”。当首先使用静态方法定义您的类时,您必须定义所有 所有想要定义索引的属性{{在第二次调用它时将抛出异常(因此你必须添加一个单独的防护,以防止它在第二次加载类时运行)。

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

如果您的问题实际上只是查询数组,您可以随时使用为大多数数据结构实现的Ruby select-method,但它通常只能遍历所有对象而不会使用索引。

答案 2 :(得分:1)

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

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