Я пытаюсь смоделировать фильтр Блума в Scala.Сама логика на самом деле довольно проста, но я изо всех сил пытаюсь понять, как адекватно использовать структуры данных Scala, чтобы сделать их красивыми, идиоматичными и функциональными.
Моя проблема заключается в следующем: если я использую класс case, янужен конструктор для генерации хеш-функций и массива битов, в котором будут храниться фактические данные фильтра Блума.Но затем, в таком методе, как «add», который изменит содержимое массива битов, мне нужно вернуть новый фильтр Блума, а не изменять содержимое существующего, чтобы мой метод был прозрачно ссылочным.
К сожалению, я не могу создать новый фильтр Блума, потому что я не хочу, чтобы новый заново создавал новый массив битов и новые хеш-функции, и я также не могу передать его существующим, потому что ниМассив битов и хеш-функции являются частью класса случая фильтра Блума.
Так как же мне это моделировать в Scala?