In object Sized
(in "shapeless / sized.scala") gibt es unapplySeq
, was leider keine statische Überprüfung bietet. Zum Beispiel scheitert der folgende Code zur Laufzeit mit MatchError
:
Es wäre besser, wenn stattdessen unapply
-Methode vorhanden wäre, die Option des Tupels zurückgegeben wird und die konkrete Form des Tupels entsprechend der Größe der Sized-Instanz erstellt wurde. Zum Beispiel:
In diesem Fall konnte das vorherige Code-Snippet nicht mit constructor cannot be instantiated to expected type
kompiliert werden.
Bitte helfen Sie mir unapply
für object Sized
zu implementieren. Ist diese Methode bereits überall implementiert?
Vielen Dank im Voraus!
Dies ist definitiv möglich (zumindest für Sized
, wobei N
kleiner als 23 ist), aber der einzige Ansatz, den ich mir vorstellen kann (Sperren von Makros usw.), ist irgendwie unordentlich. Zuerst benötigen wir eine Typklasse, die uns hilft, sortierte Sammlungen in HList
s zu konvertieren:
Und dann können wir ein Extraktorobjekt definieren, das diese Konvertierung verwendet:
%Vor%Und dann:
%Vor%Aber:
%Vor%Wie gewünscht.