Ich versuche, Protokolle zu verwenden, um eine technische Nummer Typ (ein "knumber") zu erstellen, so kann ich (+ "1k" "2Meg")
sagen und etwas wie "2.001Meg"
bekommen. Ich sollte in der Lage sein, den Gleitkommawert wie (:val my-knumber)
aus dem Knubber zu bekommen, aber normalerweise sollte der Drucker die Zeichenkette anzeigen, die auch so zugänglich ist (:string my-knumber)
. Diese Nummer unterstützt alle üblichen Suffixe für p, n, u, m, k, Meg und G und kann nach Bedarf konvertiert werden, z. B. (/ "1Meg" "1G") -> "1m")
. Ich möchte das an jede Funktion weitergeben können, die eine Nummer erwartet.Wie zu erweitern numerische Protokolle in Clojure
Wie auch immer, kann jemand eine Strategie dafür vorschlagen? Ich denke, ich muss Protokolle verwenden. Ich habe derzeit eine (defrecord knumber [val string])
, aber ich bin mir nicht sicher, was als nächstes kommt.
Mit welchen Protokollen werden die Clojure-Nummern verknüpft? Ich denke, dass ich einige vorhandene Protokolle/Schnittstellen dafür erweitern muss.
Dank
Ich weiß, es ist nicht das Gleiche, aber Sie können einfach wissenschaftliche Notation verwenden: (/ 1e6 1e9) – DaoWen