8

( object Sized"shapeless/sized.scala" 内) にはunapplySeq、残念ながら静的チェックを提供しない があります。たとえば、以下のコードは実行時に次のように失敗しますMatchError

Sized(1, 2, 3) match { case Sized(x, y) => ":(" }

unapply代わりに、タプルの Option を返すメソッドがあり、 Sized インスタンスのサイズに応じてタプルの具体的な形状が構築されるとよいでしょう。例えば:

Sized(1) => x
Sized(1, 2) => (x, y)
Sized(1, 2, 3) => (x, y, z)

その場合、前のコード スニペットはconstructor cannot be instantiated to expected type.

unapplyの実装を手伝ってくださいobject Sized。このメソッドはすでにどこかに実装されていますか?

前もって感謝します!

4

1 に答える 1