与在:use中使用:only相比,在:require中使用:refer有什么优势?以下是同义词吗?
(ns so.example (:use [my.lib :only [function]]))和
(ns so.example (:require [my.lib :refer [function]]))发布于 2012-04-29 16:09:04
将:refer添加到:require的主要思想是完全摆脱:use,只留下一个运算符来加载其他包。您可以使用(:require [my.lib :refer :all])模拟现有的:use ...
发布于 2012-04-28 05:35:42
是的,它们是等价的,
:refer和:require是构建名称空间所需的基本操作。:use更方便
:require使类成为loaded:refer,将一些东西添加到名称空间,这实际上只是一个映射(实际上有几个maps):use是:require + :refer
尽管看起来很像,但命名空间确实没有什么神奇之处。
如果您创建的名称空间如下所示
(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 ]]))发布于 2016-08-19 20:02:18
从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)
https://stackoverflow.com/questions/10358149
复制相似问题