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?
2
A
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
cela fonctionne parfaitement, y compris au sein d'une session de CIDER. Merci! –