有什么好处没有使用:refer中:require有超过使用:only中:use?以下是同义词吗?
(ns so.example (:use [my.lib :only [function]]))
和
(ns so.example (:require [my.lib :refer [function]]))
Answers:
增加的主要思想: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 ]]))
:refer要添加到中:require。尚未解决的问题是什么?
:refer来:require就是要彻底从摆脱:use。现在您可以:use使用(:require [my.lib :refer :all])...
从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)
:refer可以使我们摆脱:use,但是您能指出一些表明这是想法的文档吗?我个人认为:use在某些情况下比较方便,例如使用clojure.test。为什么:use在这种情况下不使用?