Clojure - 获取向量向量内的数据

标签 clojure lighttable

我有一个向量向量,其中包含一些字符串和整数:

(def data [
["a" "title" "b" 1]
["c" "title" "d" 1]
["e" "title" "f" 2]
["g" "title" "h" 1]
])

我正在尝试迭代向量并返回(?)包含特定字符串的任何行,例如“A”。我尝试实现这样的事情:

(defn get-row [data]
  (for [d [data]
        :when (= (get-in d[0]) "a")] d
  ))

我对 Clojure 很陌生,但我相信这是在说:对于“data”中的每个元素(向量),如果该向量包含“a”,则返回它?

我知道获取需要 2 个参数,这部分是我不确定该怎么做的地方。

我看过类似 this 的答案和 this但我不太明白它们是如何工作的。据我所知,他们正在将矢量转换为 map 并对其进行操作?

最佳答案

(filter #(some #{"a"} %) data)

看到集合 #{"a"} 有点奇怪,但它可以用作 some 的谓词函数。 。向集合中添加更多条目就像是逻辑“或”,即

(filter #(some #{"a" "c"} %) data)
=> (["a" "title" "b" 1] ["c" "title" "d" 1])

关于Clojure - 获取向量向量内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175534/

相关文章:

Clojure .get 和它的区别

未在光表中执行的 Python 脚本显示错误

python - 安装 Light Table,为 python 工作,然后为 Julia 设置它,现在 python 有问题

clojure - 为什么环在这个响应中给我错误?

ssl - Clojure:使用 aleph 连接到 TLS 启用 docker 守护进程

clojure - Clojure 中大型 map 的性能

clojure - LightTable 和 lein REPL 中完成时间的差异

linux - 无法为 Ubuntu 安装 LightTable

python - 从 Light Table 运行 Python 3

debugging - 如何在 Clojure 中跟踪代码执行?