在Clojure 1.4中有什么用途需要引用?
使用什么优点:refer
:require
已经结束使用:only
在:use
? 以下是同义词吗?
(ns so.example (:use [my.lib :only [function]]))
和
(ns so.example (:require [my.lib :refer [function]]))
添加主要思想:refer
:require
是完全摆脱:use
,只留下一个运营商加载其他包。 你可以模拟现有的:use
(:require [my.lib :refer :all])
…
是的,它们是等价的,
:refer
和:require
是构build命名空间所需的基本操作。 :use
更加方便
-
:require
导致类被加载 -
:refer
将名称空间添加到名称空间中,实际上只是一个地图(实际上是一对地图) -
:use
是:refer
+:require
它可能看起来像这样,命名空间真的没有什么魔力
如果你做这样的命名空间
(ns so.example (:use my.lib))
相当于:要求将是:
(ns so.example (:require [my.lib :refer [function1 function2 function3 list every function in example here and remember to keep it up to date ]]))
从1.4.0版本开始,不再有使用use的好理由。 使用require:请参考。 从Clojure 1.4.0更改日志:“require现在可以带一个:引用选项。:引用从名字空间引用符号列表或:全部引入所有公共variables。 (从https://8thlight.com/blog/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html )