Clojure中defn-与defn ^:private的区别是什么?
Clojure中defn-与defn ^:private的区别
- 两者功能完全等价,
defn-就是defn ^:private的语法糖。 defn-是Clojure官方提供的宏,展开后会自动给生成的函数变量加上:private true的元数据,和手动写defn ^:private的效果没有任何区别——都会把函数标记为当前命名空间的私有,其他命名空间无法直接引用这类函数。- 你在Ring应用处理器场景里看到的
defn ^:private写法,只是个人编码习惯的差异而已。有人觉得手动标注元数据更清晰,有人偏爱defn-的简洁,选哪种写法都不会影响代码功能。
内容的提问来源于stack exchange,提问作者Eoin Dowling
相关产品推荐
相关产品推荐

