我可以通过两种方式创建集合/映射/向量
(into #{} xs) ;; creates PersistentHashSet
(set xs) ;; creates PersistentHashSet
(into {} xs) ;; creates PersistentArrayMap or PersistentHashMap (depends on xs size)
(apply hash-map xs) ;; creates PersistentHashMap
(into [] xs) ;; creates PersistentVector
(vec xs) ;; creates PersistentVector
(into r xs)
- 通过 conj! 将输入序列逐个添加到传递的结果集合(使用 transient/persistent 技巧)定义一个通用的算法
(ctor xs)
- 精确地定义结果数据结构的类型
- 将 xs 序列作为构造函数(静态 java 函数)的参数传递,所以每个构造函数都可以定义其自己的创建逻辑(可能不是逐个 conj 输入序列)
这两种方式之间是否有性能差异?
可能有一个已建立的语法定义何时使用?
谢谢!