首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Clojure 1.4中,refer在require中的用法是什么?

在Clojure 1.4中,refer在require中的用法是什么?
EN

Stack Overflow用户
提问于 2012-04-28 05:32:24
回答 3查看 14.7K关注 0票数 73

与在:use中使用:only相比,在:require中使用:refer有什么优势?以下是同义词吗?

代码语言:javascript
复制
(ns so.example (:use [my.lib :only [function]]))

代码语言:javascript
复制
(ns so.example (:require [my.lib :refer [function]]))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-29 16:09:04

:refer添加到:require的主要思想是完全摆脱:use,只留下一个运算符来加载其他包。您可以使用(:require [my.lib :refer :all])模拟现有的:use ...

票数 84
EN

Stack Overflow用户

发布于 2012-04-28 05:35:42

是的,它们是等价的,

:refer:require是构建名称空间所需的基本操作。:use更方便

  • :require使类成为loaded
  • :refer,将一些东西添加到名称空间,这实际上只是一个映射(实际上有几个maps)
  • :use:require

+ :refer

尽管看起来很像,但命名空间确实没有什么神奇之处。

如果您创建的名称空间如下所示

代码语言:javascript
复制
(ns so.example (:use my.lib))

等同于:require的是:

代码语言:javascript
复制
(ns so.example (:require [my.lib :refer [function1 function2 function3 
                                         list every function in example 
                                         here and remember to keep it 
                                         up to date ]]))
票数 26
EN

Stack Overflow用户

发布于 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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10358149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档