Cuál es la sintaxis aceptada / recomendada para el código Scala con muchos métodos de encadenamiento?
En Scala, tiendo a favorecer la escritura de grandes expresiones encadenadas sobre muchas expresiones más pequeñas conval
asignaciones. En mi empresa, hemos desarrollado un estilo para este tipo de código. Aquí hay un ejemplo totalmente artificial (la idea es mostrar una expresión con muchas llamadas encadenadas):
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'sScala Style Guide (pdf), que generalmente me gusta, sugiere que la notación de punto inicial en las llamadas a métodos encadenados puede ser mala (ver doc: Invocación de métodos / Funciones de orden superior), aunque no cubre expresiones de varias líneas como esta directamente. @
¿Existe otra forma más aceptada / idiomática de escribir la funciónfoo
¿encima
ACTUALIZACIÓN: 28-jun-2011
Muchas respuestas excelentes y discusión a continuación. No parece haber una respuesta del 100% "debe hacerlo de esta manera", por lo que voy a aceptar la respuesta más popular por votos, que actualmente es el enfoque de comprensión. Personalmente, creo que voy a seguir con la notación de punto inicial por ahora y aceptar los riesgos que conlleva.