两者似乎都表示私有函数,类似于大多数 OOP 语言中的私有函数。是否存在功能差异或者只是语法糖?
我见过 defn ^:private 在环应用程序的处理程序上下文中使用。
关于宏
defn-
(defn ^:private foo [args] ...)
但是,这只是向用户提示不应使用这些功能。测试等很容易解决这个弱“私有”限制。由于麻烦,我从不使用所谓的“私有”函数(我有时使用元数据 ^:no-doc 和像 foo-impl 这样的名称来指示 fn 不是面向公众的 API 的一部分,应该被忽略图书馆用户)。
您可以查看 Clojure 源代码
中