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]
`