using in比 using :refer
in:require
有什么优势?以下是同义词吗?:only
:use
(ns so.example (:use [my.lib :only [function]]))
和
(ns so.example (:require [my.lib :refer [function]]))
using in比 using :refer
in: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
是构建命名空间所需的基本操作。:use
更方便
:require
导致类被加载:refer
将东西添加到实际上只是一个映射的名称空间(实际上是几个映射):use
是:refer
+:require
尽管看起来很像,但命名空间真的没有什么魔力
如果你创建一个这样的命名空间
(ns so.example (:use my.lib))
:require 的等价物是:
(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 :refer 代替。从 Clojure 1.4.0 更改日志中:“require 现在可以采用 :refer 选项。:refer 采用符号列表从命名空间引用或 :all 引入所有公共变量。” (来自 https://8thlight.com/blog/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html)