タプルをそれぞれの変数に展開するときにも `@` が使える

FP in Scala の日本語訳読んでます。

読んでることとは直接関係ないですが、例えばこんな関数があったとします。

// 第6章 純粋関数型の状態から
// RNG は乱数生成の状態を表すオブジェクトだと思ってください。

def nextInt: (Int, RNG) = ???

この関数を変数に取る際、それぞれ別の変数に分割して取ることができます。

// i には生成した乱数が、nextRng には状態が取れる。
val (i, nextRng) = nextInt

「べつの変数にも分割して取りたいけど、パターンマッチみたいにタプルも一緒に取りたいなー」と思ってたら、同じ書き方で取ることができるようです。知らなかった・・・。

// tpl には結果のタプルがそのまま取れる。
val tpl @ (i, nextRng) = nextInt

私が知らなかっただけかもしれませんが、少し感動したのでブログ書きました。