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:从惰性序列中提取具有特定值的映射_Clojure_Lazy Sequences - Fatal编程技术网

Clojure:从惰性序列中提取具有特定值的映射

Clojure:从惰性序列中提取具有特定值的映射,clojure,lazy-sequences,Clojure,Lazy Sequences,我有一个Clojure惰性序列: { {:keyOne 123, :keyTwo "TestVal"} {:keyOne 456, :keyTwo "Value2"} {:keyOne 789, :keyTwo "TestVal"} } 我想要得到给定键具有特定值的映射,例如,我想要所有具有值“TestVal”的映射作为:keytoo值,因此我期望结果中的第一个和第三个元素 我假设我应该能够使用过滤器解决这个问题,但是我已经浏览了所有我能找到的示例,它们从来没有使用过这

我有一个Clojure惰性序列:

{
    {:keyOne 123, :keyTwo "TestVal"}
    {:keyOne 456, :keyTwo "Value2"}
    {:keyOne 789, :keyTwo "TestVal"}
}
我想要得到给定键具有特定值的映射,例如,我想要所有具有值
“TestVal”
的映射作为
:keytoo
值,因此我期望结果中的第一个和第三个元素

我假设我应该能够使用
过滤器
解决这个问题,但是我已经浏览了所有我能找到的示例,它们从来没有使用过这样的嵌套结构

{{:keyOne 123, :keyTwo "TestVal"}
 {:keyOne 456, :keyTwo "Value2"}
 {:keyOne 789, :keyTwo "TestVal"}}
在clojure中,这个表达式没有意义,这不是映射的惰性序列。 为了充分回答您的问题,我认为输入数据如下:

(def input '({:keyOne 123, :keyTwo "TestVal"}
             {:keyOne 456, :keyTwo "Value2"}
             {:keyOne 789, :keyTwo "TestVal"}))
我们可以这样表达您的目的:

(filter (fn [m] (= "TestVal" (:keyTwo m))) input)

它不在乎输入序列是否懒惰(渴望)。

map identity
非常奇怪。没有必要强迫输入是惰性的:任何适用于惰性序列的东西都应该适用于渴望序列,包括您编写的代码。您的注释是准确的。将渴望序列视为懒惰序列是毫无意义的。我将修改我的答案,使之更加实际和准确。