using in比 using :referin:require有什么优势?以下是同义词吗?:only:use
(ns so.example (:use [my.lib :only [function]]))
和
(ns so.example (:require [my.lib :refer [function]]))
using in比 using :referin: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)