2017-09-02 1 views
2

Je travaille avec Clojure sur certains formats binaires dans lesquels il est logique d'inspecter les nombres qui sont formatés en hexadécimal (0x10). Comment puis-je configurer Clojure pour rendre les nombres en hexadécimal, par défaut? C'est probablement le plus pertinent pour moi dans un REPL, mais je m'intéresse aussi à des mécanismes plus généraux.Comment puis-je définir le format numérique par défaut dans Clojure?

Répondre

7

Clojure utilise des méthodes multiples pour imprimer des données: print-method (destiné à fournir une sortie à lire par des humains) et print-dup (qui produit une sortie qui peut être analysée avec read).

Ainsi, pour REPL vous pouvez simplement fournir l'implémentation de l'impression méthode pour java.lang.Number s comme dans la session REPL ci-dessous:

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

cela fonctionne parfaitement, y compris au sein d'une session de CIDER. Merci! –