gpt4 book ai didi

list - 在 Clojure 中访问列表中的 map

转载 作者:行者123 更新时间:2023-12-01 10:15:34 24 4
gpt4 key购买 nike

代码如下:

(def entry {:name tempName :num tempNum})

(def tempList '(entry))

(println (get (nth tempList 0) (:name)))

Exception in thread "main" java.lang.IllegalArgumentException: Wrong number of args passed to keyword: :name

在这段代码中,我定义了一个名为 entry 的映射,其中包含一个 :name 和一个 :num,然后我把它放在一个列表中,然后我尝试打印第一个(也是唯一一个)元素的 :name 字段名单。 (或者至少这是我认为我的代码所做的 :o)

在将名称放入列表之前,我可以从条目映射访问名称,但是一旦它进入列表,我就会收到此错误。我应该提供什么参数?

最佳答案

有两个问题。

首先,对于包含要解析的符号的列表(如您的情况下的符号条目),您必须使用 syntax-quote (反引号)而不是常规引号(撇号);所以这一行:

(def tempList '(entry))

应该是:

(def tempList `(entry))

或者只是(使用向量,这在 Clojure 中更惯用也更容易使用):

(def tempList [entry]) ; no quoting needed for vectors

然后,改变这一行

(println (get (nth tempList 0) (:name)))

要么这样:

(println (get (nth tempList 0) :name))

或者这个:

(println (:name (nth tempList 0)))

关于list - 在 Clojure 中访问列表中的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1122112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com