clojure.set/union 对其输入的类型非常敏感。它不会尝试检查或修正输入类型,也不会引发错误,甚至没有记录这种行为。
如果所有输入都是集合,那么它将正常工作。
`
ti.repl-init=> (clojure.set/union #{1 2 3} #{1 2 3 4})
{1 4 3 2}
`
如果参数都是向量或序列,它将以相同类型返回,包含重复项。
ti.repl-init=> (clojure.set/union [1 2 3] [1 2 3]) [1 2 3 1 2 3] ti.repl-init=> (clojure.set/union (list 1 2 3) (list 1 2 3)) (3 2 1 1 2 3)
如果参数是混合的,只有当最长输入参数是集合时,才返回正确的结果。
`
ti.repl-init=> (clojure.set/union #{1 2 3} [2 3])
{1 3 2}
ti.repl-init=> (clojure.set/union [1 2 3] #{2 3})
[1 2 3 3 2]
ti.repl-init=> (clojure.set/union [2 3] #{1 2 3})
{1 3 2}
ti.repl-init=> (clojure.set/union #{2 3} [1 2 3])
[1 2 3 3 2]
`