Missing Sized.unapply

8

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 :

%Vor%

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:

%Vor%

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!

    
Dmytro Starosud 15.04.2014, 17:34
quelle

1 Antwort

5

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:

%Vor%

Und dann können wir ein Extraktorobjekt definieren, das diese Konvertierung verwendet:

%Vor%

Und dann:

%Vor%

Aber:

%Vor%

Wie gewünscht.

    
Travis Brown 19.04.2014, 19:21
quelle

Tags und Links