如何在Clojure中迭代嵌套数组哈希结构?

如何在Clojure中迭代嵌套数组哈希结构?,clojure,Clojure,我想存储多个配置条目,这些条目可以在数据结构中灵活扩展,如下所示: (def config [{:host "test", :port 1},{:host "testtest", :port 2}]) 稍后,我将迭代并处理该数组中的每个哈希 有人能指出如何在Clojure中做到这一点吗?如果您只想让副作用在矢量中存储的每个地图上循环,您可以使用for或doseq。如果您事先知道地图的各个关键点,甚至可以使用来绑定它们: (def config [{:host "test", :port 1},

我想存储多个配置条目,这些条目可以在数据结构中灵活扩展,如下所示:

(def config [{:host "test", :port 1},{:host "testtest", :port 2}])
稍后,我将迭代并处理该数组中的每个哈希

有人能指出如何在Clojure中做到这一点吗?

如果您只想让副作用在矢量中存储的每个地图上循环,您可以使用for或doseq。如果您事先知道地图的各个关键点,甚至可以使用来绑定它们:

(def config [{:host "test", :port 1},{:host "testtest", :port 2}])

(for [{h :host p :port} config]
  (format "host: %s ; port: %s" h p))

; => ("host: test ; port: 1" "host: testtest ; port: 2")
如果只希望副作用在矢量中存储的每个贴图上循环,则可以使用for或doseq。如果您事先知道地图的各个关键点,甚至可以使用来绑定它们:

(def config [{:host "test", :port 1},{:host "testtest", :port 2}])

(for [{h :host p :port} config]
  (format "host: %s ; port: %s" h p))

; => ("host: test ; port: 1" "host: testtest ; port: 2")

一个方便的方法是使用地图

 (map #(print (:host %1)) config)
或者只是一般情况

 (map my-processing-func config)             

一个方便的方法是使用地图

 (map #(print (:host %1)) config)
或者只是一般情况

 (map my-processing-func config)             

注意,为了清楚地交流,配置是一个映射向量。哈希通常是指由hash function.Meh生成的数字。Hash和map都使用,因为根据上下文的不同,两者都可能不清楚:有时Hash与Hash代码相关,有时map是用于转换序列中每个元素的函数。我认为map是一个更流行的默认值,但是hash在这里一点也不错误。根据我的经验,如果每个人都单独使用术语hash来指代map,那么人们就很少使用hash。人们经常使用散列表和散列映射,但仅仅散列本身听起来不像是一种数据结构。在本例中,这会让人更加困惑,因为通常Clojure中具有16个或更少键的持久映射存储在数组映射中,而数组映射与哈希映射/表完全不同。向量也绝对不同于数组。在阅读了示例代码之后,我们都理解了海报的意思,但是最好使用正确的术语。注意,为了清楚地交流,配置是一个映射向量。哈希通常是指由hash function.Meh生成的数字。Hash和map都使用,因为根据上下文的不同,两者都可能不清楚:有时Hash与Hash代码相关,有时map是用于转换序列中每个元素的函数。我认为map是一个更流行的默认值,但是hash在这里一点也不错误。根据我的经验,如果每个人都单独使用术语hash来指代map,那么人们就很少使用hash。人们经常使用散列表和散列映射,但仅仅散列本身听起来不像是一种数据结构。在本例中,这会让人更加困惑,因为通常Clojure中具有16个或更少键的持久映射存储在数组映射中,而数组映射与哈希映射/表完全不同。向量也绝对不同于数组。在阅读示例代码后,我们都理解海报的意思,但最好使用正确的术语。