什么是“进入”功能?

时间:2015-07-18 12:22:13

标签: clojure clojurescript

我有一个定义如下的函数:

(defn delete-rule [rules rule]
  (om/transact! rules
    (fn [rules] (into [] (remove #(= rule %) rules)))))

这里into的目的是什么? 这不会产生与上面结果完全相同的结果:

(defn delete-rule [rules rule]
  (om/transact! rules
    (fn [rules] (remove #(= rule %) rules))))

1 个答案:

答案 0 :(得分:7)

来自remove的文档:

  

返回coll中项目的延迟序列(pred item)   返回false。 pred必须没有副作用。返回一个传感器   没有收集的时候。

来自into的文档:

  

返回一个新的coll,它包含to-coll和所有项目   from-coll连体。可以提供换能器。

所以区别在于,带有into的删除规则版本返回非延迟向量,而没有into的版本返回延迟序列。

你的功能的细节是om不支持列表(或延迟序列)作为游标,只支持地图和向量,这就是为什么删除的输出必须转换为向量的原因

希望有所帮助。