Clojure 中的 defn- 和 defn ^:private 有什么区别?

问题描述 投票:0回答:1

两者似乎都表示私有函数,类似于大多数 OOP 语言中的私有函数。是否存在功能差异或者只是语法糖?

我见过 defn ^:private 在环应用程序的处理程序上下文中使用。

clojure ring defn
1个回答
0
投票

关于宏

defn-
,它只是“私有”函数的简写。长形式看起来像:

(defn ^:private foo [args] ...)

但是,这只是向用户提示不应使用这些功能。测试等很容易解决这个弱“私有”限制。由于麻烦,我从不使用所谓的“私有”函数(我有时使用元数据 ^:no-doc 和像 foo-impl 这样的名称来指示 fn 不是面向公众的 API 的一部分,应该被忽略图书馆用户)。

您可以查看 Clojure 源代码

defn- 的定义以了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.