labelled-generic

___ tag123shapeless ___ formlos ist (eine Erkundung von) eine Typklasse und abhängige Typ basierte generische (aka polytypische / polymorphe) Programmierbibliothek für Scala. ___ qstnhdr ___ Verwenden von formlosen Tags mit LabelledGenerics ___ tag123labelledgeric__ Hilf uns dabei, dieses Wiki zu bearbeiten ___ tag123scala ___ Scala ist eine universelle Programmiersprache, die hauptsächlich auf die Java Virtual Machine abzielt. Entwickelt, um gängige Programmiermuster in einer prägnanten, eleganten und typensicheren Weise auszudrücken, vereint es sowohl imperative als auch funktionale Programmierstile. Seine Hauptmerkmale sind: fortgeschrittenes statisches System mit Typinferenz; Funktionstypen; Muster-Matching; implizite Parameter und Konvertierungen; Überlastung des Bedieners; volle Interoperabilität mit Java; Nebenläufigkeit ___ answer43200919 ___

Ihr Problem betrifft nicht %code% . Es kann tatsächlich vereinfacht werden als:

%Vor%

%code% kann als %code% "dargestellt" werden. Beachten Sie, dass %code% .

Wenn der Compiler versucht, eine implizite %code% zu erhalten, beschwert er sich über divergierende implizite Erweiterung: %code% und %code% .

Zurück zu Ihrem ursprünglichen Code, könnte eine einfache Lösung sein, einfach %code% wie neu zu schreiben:

%Vor%     
___ tag123hlist ___ HList, was für "heterogene Listen" steht, ist eine Datenstruktur für eine Liste von Elementen verschiedener, aber zur Kompilierungszeit bekannter Typen. Dieses Tag steht in engem Zusammenhang mit [list] und ist nicht mit [html-lists] verbunden ___ qstntxt ___

Angenommen, ich würde die generische Darstellung der Fallklasse wie beschrieben durchlaufen hier

Ich habe eine Typklasse definiert, um Felder zu beschreiben:

%Vor%

Definierte eine Instanz:

%Vor%

Und allgemeiner Benutzer:

%Vor%

So, jetzt könnte ich schreiben

%Vor%

und hole

  

res1: String = Punkt {x: 1.000, y: 2.000, z: 3.000}

Nun möchte ich einige Feldmetadaten mit %code% tags definieren:

%Vor%

So erzeugt %code% jetzt erfolgreich

  

res2: String = 0,500 [unsichtbar]

Aber mit neu definiert

%Vor%

ergibt einen Kompilierungsfehler:

  

Fehler: divergierende implizite Erweiterung für Typ   %Code%   beginnend mit der Methode %code% in der Klasse ...

Ich nehme an, dass der Typ %code% sich nicht als %code% identifiziert, aber nicht erraten konnte, wie er behoben werden kann.

Wie könnte man für eine solche Situation richtiges %code% definieren?

    
___
1
Antwort

Übergeben Sie einen Typparameter, der als Argument LabelledGeneric verwendet werden soll

Ich versuche, eine Methode zu parametrisieren, die an einem generischen Typ A arbeiten muss, für den ein LabelledGeneric abgerufen werden kann. Hier ist der naive Ansatz %Vor% Natürlich klagt das zugrunde liegende Makro. Es weiß nicht...
13.12.2014, 00:44
1
Antwort

Verwenden von formlosen Tags mit LabelledGenerics

Angenommen, ich würde die generische Darstellung der Fallklasse wie beschrieben durchlaufen hier Ich habe eine Typklasse definiert, um Felder zu beschreiben: %Vor% Definierte eine Instanz: %Vor% Und allgemeiner Benutzer: %Vor% S...
27.08.2015, 13:33