我有一个这样定义的函数:
(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/