Generische Methode, die in scala in den Strukturtyp konvertierbar ist

8

Warum kann ich das nicht tun:

%Vor%

Um irgendeine Sequenz von Typen zu vergleichen, die in Int umwandelbar sind? Wie kann ich ein ähnliches Muster implementieren?

Update: Dies sollte Message.compare(List(1.0, 2.0, 3.0), List(0, 0, 0))

ausführen     
Hugo Sereno Ferreira 07.12.2011, 21:17
quelle

3 Antworten

2

Ein gutes Beispiel dafür, wo das Problem liegt, scheint folgendes zu tun:

%Vor%

Scala 2.9.1 explodiert an dieser Stelle irgendwann im Runtime-Code - ich kann nur denken, dass das ein Bug ist.

Sie können jedoch den gewünschten Effekt erzielen, indem Sie Typklassen verwenden: Der folgende Code funktioniert in allen Ihren Beispielen:

%Vor%

Dies sollte auch den Vorteil haben, schneller zu sein als die Version, die Strukturtypen verwendet. Wenn Sie eigene Typen hinzufügen müssen, die in Integer konvertierbar sein sollen, können Sie die Numerische Typklasse auf die gleiche Weise wie bei Ссылка für die Standardwerte.

    
Submonoid 04.01.2012, 19:04
quelle
9

Da es sich um Array s handelt, benötigen Sie ClassManifest s.

%Vor%

Die Compiler-Fehlermeldung könnte in diesem Fall nicht klarer IMO sein.

BEARBEITEN:

Sie müssen Sequenzen nicht wirklich in Arrays konvertieren. Folgendes funktioniert gut.

%Vor%     
missingfaktor 07.12.2011 21:30
quelle
2

Es funktioniert gut für mich, wenn ich die unnötige toArray

entferne %Vor%

Wenn Sie das Seq in ein Array konvertieren, müssen Sie ein implizites ClassManifest hinzufügen, aber Scala lässt Sie nicht solche mit View-Grenzen mischen.

    
Dan Simon 07.12.2011 21:36
quelle

Tags und Links