Допустим, такая ситуация:
У меня есть Tuple
размера n .
Каждый элемент представляет собой флаг Boolean
, который определяет, должна ли определенная функция вызываться для объекта (здесь: builder
).
Синтаксис, который приходит мне в голову первым:
(el1, el2, el3, ...) => {
val builder = MyBuilder()
val builder1 = if(el1) builder.func1(...) else builder
val builder2 = if(el2) builder1.func2(...) else builder1
val builder3 = if(el3) builder2.func3(...) else builder2
...
}
Последний строитель builderN
будет желаемым объектом. Но этот код неприятен.
Что было бы хорошей, чистой альтернативой? (Примечание: я использую cats
.)
Другой способ изобразить мою проблему:
val result = MyBuilder.
.func1(...) //ONLY if el1!
.func2(...) //ONLY if el2!
.func3(...) //ONLY if el3!
....
.funcn(...) //ONLY if el4!
РЕДАКТИРОВАТЬ: Исправлен пример кода!