Clojure 打印#object 而不是值?

Clojure printing #object instead of value?

我正在尝试学习 Clojure,我从一些基础知识开始,例如函数、连接、词典替换等。我目前坚持的是替换。我创建了一个名为 test 的函数,它接受两个参数 vv2;它的目的是使用 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.

的方式