clojure - Clojure中用于deftype'd对象的toString方法是什么?

标签 clojure instantiation tostring deftype

(deftype Bag [state]
   Object
     (toString [bag]
       (str "Bag???" state)))

我希望toString看起来像
clojure.core=> (def b (Bag. {:apples 1 :bannanas 4}))
#'clojure.core/b
clojure.core=> (str b)
"BAG: {:apples 1 :bannanas 4}"

表示该信息的一种不错的clojurey方法是什么?

"Bag/{:k :v}" 

更好的?您如何称呼社区toStrings?

最佳答案

以下是deftype

user=> (deftype Bag [state] 
         Object 
         (toString [_] 
           (str "BAG: " (pr-str state))))
user.Bag
user=> (def b (Bag. {:apples 1 :bannanas 4}))
#'user/b
user=> (str b)
"BAG: {:bannanas 4, :apples 1}"

关于clojure - Clojure中用于deftype'd对象的toString方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688891/

相关文章:

Clojure/ClojureScript 双函数未声明

clojure - 我可以在 REPL 的 Lein 项目中查找内容吗?

Java : how to call methods with the same name in different objects instantiated from different classes?

generics - 如何在 VHDL 中将整数数组指定为泛型?

Javascript数组过滤两个搜索框

java - 为什么十六进制表示 89 在 Java 中使用 toString 后不能正确打印为 ‰?

java - 使用 javax.sound.midi.Sequencer 的 Clojure 问题

clojure - 符合规范/AST 的规范

R,R6,从 R6Generator 对象获取完整的类名

Java - 多项式项的 toString 方法