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?
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:
Sie könnten auch eine generische Schnittstelle für die Behandlung von Zahlen mit Funktionen erstellen, die für Ihren Code sinnvoll sind:
%Vor% 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?
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.
Nicht so elegant, aber im ähnlichsten Fall denke ich, dass wir das tun können:
%Vor%und wenn verwendet:
%Vor%