Это совершенно нормально.Тем не менее, есть метод |>
в Scalaz , который делает его лучше, и вы можете создать его самостоятельно, если не хотите использовать весь Scalaz:
class Piper[A](a: A) { def |>[B](f: A => B) = f(a) }
implicit def pipe_everything[A](a: A) = new Piper(a)
f |> io.Source.fromFile |> {_.mkString} |> toFoo
Лично якак правило, пишут много кода, который требует скобок, и в большинстве случаев мне нравятся методы лучше, чем операторы, поэтому в моем коде я обычно называю |>
«use», но это то же самое:
f.use(io.Source.fromFile).use(_.mkString).use(toFoo)
В Scala 2.11 или более поздней версии вы можете получить такое же поведение и повысить производительность с (немного) меньшим синтаксисом:
implicit class Piper[A](private val a: A) extends AnyVal {
def |>[B](f: A => B) = f(a)
}