【发布时间】:2019-03-04 06:44:51
【问题描述】:
我正在尝试在 Scala 中为布隆过滤器建模。逻辑本身实际上非常简单,但我正在努力弄清楚如何充分使用 Scala 的数据结构来制作漂亮、惯用和实用的数据结构。
我的问题是:如果我使用案例类,我需要构造函数来生成散列函数和存储实际布隆过滤器数据的位数组。 但是,在像“add”这样会改变位数组内容的方法中,我需要返回一个新的布隆过滤器,而不是改变现有布隆过滤器的内容,以使我的方法具有引用透明性。
不幸的是,我无法构造新的布隆过滤器,因为我不希望新的布隆过滤器重新创建新的位数组和新的哈希函数,而且我也无法将现有的传递给它,因为位数组和散列函数都属于布隆过滤器案例类。
那么我应该如何在 Scala 中建模呢?
【问题讨论】:
-
我认为您希望将位数组
private保留到实例中,使用每个add创建一个新的,并将散列函数private保留到伴随对象。 (但这只是我的想法。)
标签: scala data-structures functional-programming case-class bloom-filter