В 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
Daniel Spiewak Scala Руководство по стилю (pdf), которое мне вообще нравится, предполагает, что ведущая точка-точка в цепочках вызовов может быть плохим (см. doc: Метод Invocation/Функции более высокого порядка), хотя он не распространяется на многострочные выражения, подобные этому напрямую.
Есть ли другой, более приемлемый/идиоматический способ записи функции foo
выше?
ОБНОВЛЕНИЕ: 28 июня 2011 г.
Много замечательных ответов и обсуждений ниже. Кажется, что нет ответа 100% "вы должны сделать это таким образом", поэтому я собираюсь принять самый популярный ответ по голосам, который в настоящее время используется для понимания. Лично я думаю, что сейчас буду придерживаться нотации с ведущими точками и принять риски, которые приходят с ней.