多重代入

val a, b = 0 // a -> 0, b -> 0
val c, d = (1, 2) // c -> (1, 2), d -> (1, 2)
val (e, f) = (3, 4) // e -> 3, f -> 4
val (g, _) = (5, 6) // g -> 5
val (_, i, _) = (7, 8, 9) // i -> 8

val j :: k :: _ = List(10, 11, 12, 13, 14, 15) # j -> 10, k -> 11

多重代入っぽいものは、パターンマッチによって実現されているので、定義式の右辺はパターンマッチによって分解されうるオブジェクトでないといけない。

パターンマッチなので、アンダースコアをつかったプレースホルダーもつかえる。

Rubyのようにちゃらっと書けるまでまだ時間がかかりそうだけど、かなり柔軟にできそうなかんじなので乞うご期待。