为什么clojure.data/diff的输出中有'nil's?
那些“零”是从哪里来的 谢谢 从文档中: 递归地比较a和b,返回 [a中只有东西b中只有东西都有]。 比较规则: 对于相等的a和b,返回[nil nil a]。 在关键点匹配且值不同的位置,贴图将被细分。 集合永远不会被细分。 所有连续的事物都被视为关联集合 通过它们的索引,结果作为向量返回。 其他一切,包括字符串!被视为 一个原子与另一个原子比较是否相等。 关键的一点是,向量被视为关联集合,因此结果两部分中的内容都是“关联的”,这意味着如果两部分中的内容都由2设置关键帧(在您的案例中,这意味着它在向量中的索引为2),那么它应该由结果中的同一个关键帧显示。显然,对于包含索引2的向量,它的长度应该至少为3,这就是为什么它在值之前有nils,只是作为“nothing”的占位符 还有一个例子:为什么clojure.data/diff的输出中有'nil's?,clojure,Clojure,那些“零”是从哪里来的 谢谢 从文档中: 递归地比较a和b,返回 [a中只有东西b中只有东西都有]。 比较规则: 对于相等的a和b,返回[nil nil a]。 在关键点匹配且值不同的位置,贴图将被细分。 集合永远不会被细分。 所有连续的事物都被视为关联集合 通过它们的索引,结果作为向量返回。 其他一切,包括字符串!被视为 一个原子与另一个原子比较是否相等。 关键的一点是,向量被视为关联集合,因此结果两部分中的内容都是“关联的”,这意味着如果两部分中的内容都由2设置关键帧(在您的案例中,这意味着
user=> (def one [ "a" "b" "c" ])
#'user/one
user=> (def two [ "x" "y" "c" ])
#'user/two
user=> (require 'clojure.data)
nil
user=> (clojure.data/diff one two)
[["a" "b"] ["x" "y"] [nil nil "c"]]
从文档中:
递归地比较a和b,返回
[a中只有东西b中只有东西都有]。
比较规则:
对于相等的a和b,返回[nil nil a]。
在关键点匹配且值不同的位置,贴图将被细分。
集合永远不会被细分。
所有连续的事物都被视为关联集合
通过它们的索引,结果作为向量返回。
其他一切,包括字符串!被视为
一个原子与另一个原子比较是否相等。
关键的一点是,向量被视为关联集合,因此结果两部分中的内容都是“关联的”,这意味着如果两部分中的内容都由2设置关键帧(在您的案例中,这意味着它在向量中的索引为2),那么它应该由结果中的同一个关键帧显示。显然,对于包含索引2的向量,它的长度应该至少为3,这就是为什么它在值之前有nils,只是作为“nothing”的占位符
还有一个例子:
user=> (def one [ "a" "b" "c" ])
#'user/one
user=> (def two [ "x" "y" "c" ])
#'user/two
user=> (require 'clojure.data)
nil
user=> (clojure.data/diff one two)
[["a" "b"] ["x" "y"] [nil nil "c"]]