在clojure中将变量用作dict键
假设我有这样的代码在clojure中将变量用作dict键,clojure,Clojure,假设我有这样的代码 (def person {:name "Steve" :age 24 :salary 7886 :company "Acme"}) (def nm 'name) (println (person :nm)) 我想使用nm变量作为个人字典的密钥,就像我在最后一行中尝试的那样。在clojure中可能吗?是的,但地图使用的是关键字:名称,而不是符号名称,因此您需要将代码更改为 (def nm :name) (println (person
(def person {:name "Steve" :age 24 :salary 7886 :company "Acme"})
(def nm 'name)
(println (person :nm))
我想使用nm变量作为个人字典的密钥,就像我在最后一行中尝试的那样。在clojure中可能吗?是的,但地图使用的是关键字:名称,而不是符号名称,因此您需要将代码更改为
(def nm :name)
(println (person nm))
或IMHO:
(println (get person nm))
结果
(person nm) => "Steve"
(get person nm) => "Steve"
另外,请参见Clojure备忘单。是的,但地图使用的是关键词:名称,而不是符号名称,因此您需要将代码更改为
(def nm :name)
(println (person nm))
或IMHO:
(println (get person nm))
结果
(person nm) => "Steve"
(get person nm) => "Steve"
另外,请参见Clojure备忘单。这里的关键字和符号有些混淆
(type 'name)
clojure.lang.Symbol
(type :nm)
clojure.lang.Keyword
所以你的关键人物就是关键词。您的def nm是一个符号。和
您的呼叫人再次使用关键字
所以你最好在这里使用关键词。例如
(def nm :name)
#'user/nm
(println (person nm))
Steve
这里的关键字和符号有些混乱
(type 'name)
clojure.lang.Symbol
(type :nm)
clojure.lang.Keyword
所以你的关键人物就是关键词。您的def nm是一个符号。和
您的呼叫人再次使用关键字
所以你最好在这里使用关键词。例如
(def nm :name)
#'user/nm
(println (person nm))
Steve
我认为像函数一样使用键更为惯用 在后台定义dict person时,所有键都被定义为该类型/dict对象的访问器函数:
(:name person) ;; => "Steve"
;; or:
(def nm :name)
(nm person) ;; => "Steve"
我认为像函数一样使用键更为惯用 在后台定义dict person时,所有键都被定义为该类型/dict对象的访问器函数:
(:name person) ;; => "Steve"
;; or:
(def nm :name)
(nm person) ;; => "Steve"