Вы можете сделать это немного лучше, используя оператор |>
от Scalaz.
scala> val captures = Vector("Hello", "World")
captures: scala.collection.immutable.Vector[java.lang.String] = Vector(Hello, World)
scala> val (a, b) = captures |> { x => (x(0), x(1)) }
a: java.lang.String = Hello
b: java.lang.String = World
Если вы не хотите использовать Scalaz, вы можете определить |>
самостоятельно, как показано ниже:
scala> class AW[A](a: A) {
| def |>[B](f: A => B): B = f(a)
| }
defined class AW
scala> implicit def aW[A](a: A): AW[A] = new AW(a)
aW: [A](a: A)AW[A]
EDIT:
Или что-то вроде предложения @ ziggystar:
scala> val Vector(a, b) = captures
a: java.lang.String = Hello
b: java.lang.String = World
Вы можете сделать его более кратким, как показано ниже:
scala> val S = Seq
S: scala.collection.Seq.type = scala.collection.Seq$@157e63a
scala> val S(a, b) = captures
a: java.lang.String = Hello
b: java.lang.String = World