Erstelle einen Nullwert einer generischen Zahlenunterklasse

9

Wie kann ich generisch eine Null eines beliebigen numerischen Typs erstellen?

Hier ist ein Spielzeugbeispiel: Eine Funktion, die eine Nullzahl in Null umwandelt.

%Vor%

Dies wird nicht kompiliert, weil die Literal-Null vom Typ int ist, und ich muss das konvertieren, um T einzugeben.

Ist das überhaupt möglich?

    
Bennett McElwee 23.08.2010, 02:24
quelle

7 Antworten

2

Zero wird in der Klasse Number nicht einmal erwähnt. Wenn Sie dies tun müssen, und ich schlage vor, null s zu vermeiden, ist vielleicht:

%Vor%

Sie könnten auch eine generische Schnittstelle für die Behandlung von Zahlen mit Funktionen erstellen, die für Ihren Code sinnvoll sind:

%Vor%     
Tom Hawtin - tackline 23.08.2010, 10:58
quelle
3

Ist das überhaupt möglich?
Nicht wirklich. Wenn zum Beispiel der Wert null ist, wie würde die Methode wissen, welche Zahlenimplementierung zurückgegeben werden soll?

    
Nikita Rybak 23.08.2010 02:28
quelle
1

versuchen:

%Vor%     
卢声远 Shengyuan Lu 23.08.2010 02:40
quelle
1

Das ist eine alte Frage, aber nachdem ich mich einige Zeit mit diesem Problem herumgeschlagen habe, habe ich eine Lösung gefunden, die für andere von Interesse sein könnte:

%Vor%

Dies funktioniert, solange Sie bei arithmetischen Operationen die Number -Instanz in einen bekannten Typ konvertieren können, zum Beispiel:

%Vor%

In solchen Situationen spielt der Typ der Variablen keine Rolle, wenn es sich um eine Instanz von Number handelt, ist es immer möglich, ein Double zu erhalten.

    
whbogado 04.07.2015 01:58
quelle
-1

Nicht so elegant, aber im ähnlichsten Fall denke ich, dass wir das tun können:

%Vor%

und wenn verwendet:

%Vor%     
Adrian Shum 23.08.2010 03:15
quelle
-1
%Vor%     
emory 23.08.2010 03:40
quelle
-1

Das Folgende ist eine Verbesserung meiner ersten Antwort.

%Vor%     
emory 23.08.2010 05:13
quelle

Tags und Links