Clojure 打印#object 而不是值?
Clojure printing #object instead of value?
我正在尝试学习 Clojure,我从一些基础知识开始,例如函数、连接、词典替换等。我目前坚持的是替换。我创建了一个名为 test
的函数,它接受两个参数 v
和 v2
;它的目的是使用 clojure.string/replace
:
用空格替换句点
(defn replace-lexicon [value lexicon replacementValue]
(println str(clojure.string/replace value lexicon replacementValue)))
(replace-lexicon "this.is.a.test" "." " ")
预期输出为:
this is a test
但是,输出带有附加信息:
#object[clojure.core$str 0x35aea049 clojure.core$str@35aea049] this is a test
我尝试搜索有关如何删除它的答案,但没有找到任何结论。根据我使用其他语言的经验,我不禁觉得这表明正在打印的不是字符串而是对象。不幸的是,这只是一个有根据的猜测,我无法证明这一点。
什么是 #object...
,如何删除它以更正我的输出?
关闭!额外的 str
是问题所在。这是使用 my favorite template project:
中的单元测试编写的版本
(ns tst.demo.core
(:use tupelo.core tupelo.test)
(:require
[clojure.string :as str]
))
(defn replace-lexicon
[value lexicon replacementValue]
(str/replace value lexicon replacementValue))
(dotest
(is= "this is a test" (replace-lexicon "this.is.a.test" "." " "))
(is= "this is a test" (replace-lexicon "this#is#a#test" "#" " "))
)
提示在错误消息的子字符串 clojure.core$str
中,这是编译器表示函数 clojure.core/str
.
的方式
我正在尝试学习 Clojure,我从一些基础知识开始,例如函数、连接、词典替换等。我目前坚持的是替换。我创建了一个名为 test
的函数,它接受两个参数 v
和 v2
;它的目的是使用 clojure.string/replace
:
(defn replace-lexicon [value lexicon replacementValue]
(println str(clojure.string/replace value lexicon replacementValue)))
(replace-lexicon "this.is.a.test" "." " ")
预期输出为:
this is a test
但是,输出带有附加信息:
#object[clojure.core$str 0x35aea049 clojure.core$str@35aea049] this is a test
我尝试搜索有关如何删除它的答案,但没有找到任何结论。根据我使用其他语言的经验,我不禁觉得这表明正在打印的不是字符串而是对象。不幸的是,这只是一个有根据的猜测,我无法证明这一点。
什么是 #object...
,如何删除它以更正我的输出?
关闭!额外的 str
是问题所在。这是使用 my favorite template project:
(ns tst.demo.core
(:use tupelo.core tupelo.test)
(:require
[clojure.string :as str]
))
(defn replace-lexicon
[value lexicon replacementValue]
(str/replace value lexicon replacementValue))
(dotest
(is= "this is a test" (replace-lexicon "this.is.a.test" "." " "))
(is= "this is a test" (replace-lexicon "this#is#a#test" "#" " "))
)
提示在错误消息的子字符串 clojure.core$str
中,这是编译器表示函数 clojure.core/str
.