我有一个这样定义的函数:

(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))))

最佳答案

remove的文档中:

返回coll中的项目的延迟序列(pred item)
返回false。 pred必须没有副作用。返回换能器
没有提供任何收藏时。

into的文档中:

返回一个新的列,该列由to-coll与以下所有项目组成
from-col联合。可以提供一个传感器。

因此区别在于,带有into的delete-rule版本返回一个非惰性向量,而没有into的delete-rule版本返回一个惰性序列。
函数的特点是om不支持列表(或惰性序列)作为游标,仅支持映射和向量,这就是为什么remove输出必须转换为vector的原因。
希望有帮助。

关于clojure - 什么是“进入”功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31491108/

10-11 07:52