主要观点:介绍 Clojure 1.12.0 中的多个新特性和改进。
关键信息:
- 添加库用于交互使用:
add-lib
等函数可在不重启 JVM 的情况下添加库,用于开发时的交互,新函数仅用于开发时的 repl 交互,通过clojure.repl.deps
实现,库解析和下载由tools.deps
提供。 - 在进程外调用工具函数:
clojure.tools.deps.interop/invoke-tool
可在进程外调用工具函数,add-lib
功能基于此,可用于构建或调用自己的工具。 - 启动和控制外部进程:新增
clojure.java.process
命名空间,提供更易用的进程控制功能,如start
和exec
。 - 方法值:可将 Java 方法作为普通函数在值上下文中使用,编译器会自动生成包装函数,可通过
:param-tags
指定方法签名。 - 限定方法:
Class/method
等形式用于指定方法的类,在非调用位置有值语义,:param-tags
可用于解决重载方法。 :param-tags
元数据:用于为限定方法指定签名,可通过新的元数据读取语法^[tag …]
添加。- 数组类语法:可使用
ComponentClass/#dimensions
形式的符号引用数组类,可作为类型提示和值。 - 函数式接口:Clojure 开发者可通过传递匹配arity的函数调用接受函数式接口的 Java 方法,可通过
let
绑定显式强制转换。 - Java Supplier 互操作:
IDeref
实现了Supplier
接口,方便调用接受Supplier
的方法。 - 与流的互操作:提供
stream-seq!
等函数以惯用法与流互操作,这些操作是终端流操作。 - PersistentVector 实现 Spliterable:
PersistentVector
提供自定义的 spliterator 支持并行性,性能提升。 - 高效的
drop
和partition
:添加IDrop
接口用于高效的drop
操作,新增partitionv
等函数用于高效的分区操作。 - Var 实习策略:收紧了 Var 实习策略,避免 interned vars 被替换,解决了与 Clojure 1.11.0 相关的问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。