Я понимаю, что на это можно где-то ответить, но мне не хватает правильных терминов, чтобы даже искать его.
Как я могу продолжать составлять функции вместе, если в определенной точке потока мне нужно использовать текущий результат в качестве параметра функции?
Представьте себе эту простую ситуацию:
Seq(1, 2, 3).map(_ * 2)
.map(doSomethingElseToEachValue(_))
.useAsParameterIn(functionThatTakesTheWholeSequence(_))
Конечно, это может быть просто сделано путем назначения промежуточного результата для val и использования этого:
val intermeditateSeq = Seq(1, 2, 3)
.map(_ * 2)
.map(doSomethingElseToEachValue(_))
functionThatTakesTheWholeSequence(intermediateSeq)
Или, обернув функцию вокруг всего, но это ухудшает читаемость, поскольку поток выполнения движется взад и вперед по мере того, как вы читаете ее.
Это также приводит к искаженному беспорядку, если у вас есть несколько из этих операций, переплетенных.
Как сохранить логический поток слева направо и сверху вниз, когда мне нужно использовать весь объект в качестве параметра, а не просто отображать его содержимое?