Ich versuche, eine Möglichkeit zu finden, 5 Minuten von 2 Stunden abzuziehen.
Es macht keinen Sinn, 5 von 2 zu subtrahieren, da wir dann -3 allgemeine Zeiteinheiten erhalten, was nutzlos ist. Aber wenn "Stunde" ein Untertyp von "Minute" ist, könnten wir 2 Stunden in 120 Minuten umwandeln, was 115 Minuten oder 1 Stunde und 55 Minuten ergibt.
Auch wenn wir 5 Äpfel zu 5 Orangen addieren wollen, können wir dies nicht in Äpfeln bewerten, sondern erwarten, dass wir 10 Früchte erhalten.
Es scheint, dass in den obigen Beispielen und generell bei der Verwendung einer Zahl als Adjektiv, die ganzen Zahlen durch den Typ des Objekts, das sie beschreiben, parametrisiert werden müssen. Ich denke, es wäre sehr nützlich, wenn statt der Deklaration von
val hours = 2
val minutes = 5
könnten Sie etwas tun wie
val hours = 2[Hour]
val minutes = 5[Minute]
val result = hours - minutes
assert (result == 115[Minute])
Gibt es so etwas, wäre es nützlich und könnte man es einführen?
EDIT Um das klarzustellen: Das obige Zeitbeispiel ist nur ein zufälliges Beispiel, das ich mir ausgedacht habe. Meine Frage ist eher, ob im Allgemeinen die Idee der parametrisierten Numerics ein nützliches Konzept ist, so wie Sie parametrisierte Listen usw. haben (die Antwort könnte "nein" sein, ich weiß es nicht!)