Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 以编程方式创建新名称空间,并从另一个名称空间将变量放入其中_Clojure - Fatal编程技术网

Clojure 以编程方式创建新名称空间,并从另一个名称空间将变量放入其中

Clojure 以编程方式创建新名称空间,并从另一个名称空间将变量放入其中,clojure,Clojure,假设我在test.core中,我想创建test.new-ns并在其中粘贴一个名为new method的var。有没有一种方法可以在不离开test.core的情况下做到这一点 这就是我想做的: (ns test.core) (create-ns 'test.new-ns) (put-in-ns 'test.new-ns 'new-method {:meta 1} {:value 1}) *ns* ;=> test.core test.new-ns/new-method ;;=>

假设我在test.core中,我想创建test.new-ns并在其中粘贴一个名为new method的var。有没有一种方法可以在不离开test.core的情况下做到这一点

这就是我想做的:

(ns test.core)

(create-ns 'test.new-ns)
(put-in-ns 'test.new-ns 'new-method {:meta 1} {:value 1})

 *ns* ;=> test.core
 test.new-ns/new-method ;;=> {:value 1}
 (meta #'test.new-ns/new-method) ;; => {:meta 1}
create ns实际上存在于clojure.core中,并且具有此签名

至于输入ns,这称为实习生;此外,它不接受元数据映射作为单独的参数,而是将附加到名称符号的任何元数据传输到变量:

(intern 'test.new-ns (with-meta 'new-method {:meta 1}) {:value 1})
Reader meta也可以工作,只要您将其放在报价中:

(intern 'test.new-ns ' ^{:meta 1} new-method {:value 1})
create ns实际上存在于clojure.core中,并且具有此签名

至于输入ns,这称为实习生;此外,它不接受元数据映射作为单独的参数,而是将附加到名称符号的任何元数据传输到变量:

(intern 'test.new-ns (with-meta 'new-method {:meta 1}) {:value 1})
Reader meta也可以工作,只要您将其放在报价中:

(intern 'test.new-ns ' ^{:meta 1} new-method {:value 1})

我相信你在找实习生

在命名空间中查找或创建由符号名称命名的变量 ns,可以是符号或命名空间,设置其根绑定 如果提供,则发送至val。名称空间必须存在。风险价值将采用任何 来自名称符号的元数据。返回变量

因此,对于您的示例,它将有点像这样:

(ns test.core)

(create-ns 'test.new-ns)

(intern 'test.new-ns 'new-method {:value 1})

我相信你在找实习生

在命名空间中查找或创建由符号名称命名的变量 ns,可以是符号或命名空间,设置其根绑定 如果提供,则发送至val。名称空间必须存在。风险价值将采用任何 来自名称符号的元数据。返回变量

因此,对于您的示例,它将有点像这样:

(ns test.core)

(create-ns 'test.new-ns)

(intern 'test.new-ns 'new-method {:value 1})