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 如何完全限定var';s值多少?_Clojure - Fatal编程技术网

Clojure 如何完全限定var';s值多少?

Clojure 如何完全限定var';s值多少?,clojure,Clojure,想象一下: (def my-var 'my-symbol) ;; Please note that it must be 'my-symbol not `my-symbol my-var ;; => my-symbol 但是我想要 ;; => fully-qualified/my-symbol 除了将值转换为字符串,是否可以完全限定我的var值?谢谢。因为符号是从字符串创建的(请参阅),并且它们是不可变的,为了从符号构建完全限定的符号,转换为字符串是不可避免的 (symbol

想象一下:

(def my-var 'my-symbol)  ;; Please note that it must be 'my-symbol not `my-symbol

my-var ;; => my-symbol
但是我想要

;; => fully-qualified/my-symbol

除了将值转换为字符串,是否可以完全限定我的var值?谢谢。

因为符号是从字符串创建的(请参阅),并且它们是不可变的,为了从符号构建完全限定的符号,转换为字符串是不可避免的

(symbol (name (ns-name *ns*)) (name 'my-symbol))
关键词也可以完全限定。值
::我的关键字
将被读取器扩展为完全限定,并采用读取该值的名称空间

::my-keyword
;;= :user/my-keyword
(ns other-ns)
::my-keyword
;;= :other-ns/my-keyword

当您需要完全限定值时,它们在Clojure中使用得更广泛。

因为符号是从字符串创建的(请参阅),并且它们是不可变的,为了从符号构建完全限定符号,转换为字符串是不可避免的

(symbol (name (ns-name *ns*)) (name 'my-symbol))
关键词也可以完全限定。值
::我的关键字
将被读取器扩展为完全限定,并采用读取该值的名称空间

::my-keyword
;;= :user/my-keyword
(ns other-ns)
::my-keyword
;;= :other-ns/my-keyword

当您需要完全限定的值时,它们在Clojure中使用得更广泛。

使用后引号而不是直接引号:

(def my-var `my-symbol) ; and not 'my-symbol

使用后引号而不是直接引号:

(def my-var `my-symbol) ; and not 'my-symbol

谢谢cgrand,但我确实评论说它必须是“我的符号而不是”我的符号Hanks cgrand,但我确实评论说它必须是“我的符号而不是”我的符号