В Scala я склоняюсь к написанию больших цепочечных выражений над многими меньшими выражениями с val
присваиваниями. В моей компании мы разработали стиль для этого типа кода. Вот полностью надуманный пример (идея состоит в том, чтобы показать выражение с множеством связанных вызовов):
import scala.util.Random
val table = (1 to 10) map { (Random.nextInt(100), _) } toMap
def foo: List[Int] =
(1 to 100)
.view
.map { _ + 3 }
.filter { _ > 10 }
.flatMap { table.get }
.take(3)
.toList
Руководство по стилю Scala Даниэля Спивака (pdf), которое мне обычно нравится, предполагает, что запись лидирующей точки в цепочечных вызовах методов может быть неправильной (см. Документ: Вызов метода / Функции высшего порядка), хотя он не распространяется на многострочные выражения, подобные этому напрямую.
Есть ли другой, более приемлемый / идиоматический способ написания функции foo
выше?
ОБНОВЛЕНИЕ: 28 июня 2011 года
Множество отличных ответов и обсуждений ниже. Кажется, нет 100% ответа «вы должны сделать это таким образом», поэтому я собираюсь принять самый популярный ответ голосованием, который в настоящее время является подходом для понимания. Лично я думаю, что я собираюсь придерживаться обозначения ведущей точки и принять риски, которые с этим связаны.