2017-09-02 2 views
2

Ich arbeite mit Clojure auf einige Binärformate, in denen es sinnvoll ist, Zahlen zu überprüfen, die hexadezimal formatiert sind (0x10). Wie kann ich Clojure so konfigurieren, dass Zahlen standardmäßig als Hex dargestellt werden? Dies ist wahrscheinlich am wichtigsten für mich während einer REPL, aber ich bin auch an allgemeineren Mechanismen interessiert.Wie kann ich das Standard-Zahlenformat in Clojure einstellen?

Antwort

7

Clojure verwendet zu Multi-Methoden zum Drucken von Daten: print-method (soll Ausgabe bereitstellen, von Menschen gelesen werden) und print-dup (die Ausgabe erzeugt, die mit lesen analysiert werden kann).

So für REPL können Sie einfach Ihre Implementierung von Druckmethode für java.lang.Number s wie in der Sitzung unter REPL bieten:

123 
=> 123 

(prn 123) 
123 
=> 123 

(defmethod print-method Number 
    [n ^java.io.Writer w] 
    (.write w (format "0x%X" n))) 
=> #object[clojure.lang.MultiFn 0x52ad430a "[email protected]"] 

123 
=> 0x7B 

(prn 123) 
0x7B 
=> nil 
+1

dies funktioniert perfekt, auch innerhalb einer CIDER Sitzung. Vielen Dank! –

Verwandte Themen