値ケースクラスがあると仮定します
case class Id(i:Int) extends AnyVal
およびこの値ケース クラスを含むシーケンス
Seq(Id(1), Id(2), Id(3))
Int
これらの値を、シーケンスを反復処理する必要なしに変換する方法はありますか (たとえば、 Seq(Id(1), Id(2), Id(3)).map(_.i)
?
私が尋ねる理由は、値ケース クラスの良いところは、実行時にネイティブ型を持つ値クラスを表現として使用できるため、非常に効率的であると思うからです。しかし、使用中のすべてのライブラリがこれらのクラスの自動「変換」をサポートしているわけではありません。したがって、ネイティブ型を渡す必要がありますが、コンパイラが最適化できるため、単純な属性の場合は大したことではありません。しかし、シーケンスがある場合は明示的にマップする必要があります。つまり、実際には実行時に同じ値にマッピングするだけなので、すべての値に対して不要な反復が発生します。そのような場合にそれを回避し、コンパイラの最適化を使用する方法はありますか?