У меня есть постоянный актер, который содержит некоторые значения.Мне нужно получить несколько отфильтрованных из них.Итак, у меня есть два способа:
1) Создать новое сообщение, скажем
GetValuesWithNameAndAgeGraterThan(name: String, age: Int)
pro: неизменяемый, ортодоксальный :) contra: проблема здесь в том, что логика просачивается в персистентного актера, который должен бытьответственность только за хранение и предоставление данных, и да, этот случай точно подходит для определения данных.Но почему он должен знать об «имени» и «возрасте» ценности, которую он хранит ?!А с завтрашнего дня мне нужно будет добавлять все больше и больше сообщений, которые в конце превратятся в беспорядок.
2) Создайте общее сообщение с предикатом фильтрации
Filter(p: Value => Boolean)
pro: одиночное, масштабируемоенеизменяемый при правильном использовании, напротив: я вижу единственную проблему, когда кто-то делает
val ages: mutable.Seq[Int]
persistor ? Filter(v => ages.contains(v.age))
ages += 18
ages += 33
, но мы обычно используем неизменные значения в Scala!а также было бы неестественно пытаться сохранить лямбду, но мы используем ее только для чтения!
Итак, что вы думаете?!