Clojure 1.13 新增了对检查键的支持

Hacker News Top 工具

摘要

Clojure 1.13.0-alpha1 已发布,新增了用于映射解构的检查键,强制要求必需键并在缺失时抛出异常,以及其他改进。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/06 17:05

# Clojure - Clojure 1.13.0-alpha1 来源:https://clojure.org/news/2026/07/02/clojure-1-13-alpha1 *2026年7月2日* *Alex Miller* Clojure 1.13.0-alpha1 现已可用!请到 Downloads(https://clojure.org/releases/downloads)页面查找下载和使用信息。 ## https://clojure.org/news/2026/07/02/clojure-1-13-alpha1#_checked_keys检查键 现在,您可以通过使用 `:keys` / `:syms` / `:strs` 指令的新检查变体——`:keys!` / `:syms!` / `:strs!`,来确保在映射解构时所需的键已绑定,若键不存在则会抛出异常。此外,在所有指令中,您还可以在 `&` 之后指定不会被绑定的键,用于文档记录或检查目的。 - CLJ-2961 (https://clojure.atlassian.net/browse/CLJ-2961) 检查键 - CLJ-2960 (https://clojure.atlassian.net/browse/CLJ-2960) 检查键的规范 - CLJ-2949 (https://clojure.atlassian.net/browse/CLJ-2949) `req!` – `get` 的变体,在找不到键时报告错误 - CLJ-2954 (https://clojure.atlassian.net/browse/CLJ-2954) let/loop/let* – 禁止将 `&` 作为局部绑定 ## https://clojure.org/news/2026/07/02/clojure-1-13-alpha1#_other_changes_since_clojure_1_12_5自 Clojure 1.12.5 以来的其他更改 - 仅包含关键字键的 PersistentArrayMap 现在在转换为 PersistentHashMap 之前,其增长上限为 64 个元素(之前为 8 个)。在此范围内,PAM 的身份扫描比 PHM 查找效率更高,同时也使更多调用点变为单态,从而更容易优化。 - CLJ-2891 (https://clojure.atlassian.net/browse/CLJ-2891) 移除了静态初始化常量上的 ACC_FINAL 标记。此更改是为了将 Java 字节码基线迁移以应对新的验证器检查而做的准备工作。 - 运行时和测试依赖项已更新至最新版本。 ## https://clojure.org/news/2026/07/02/clojure-1-13-alpha1#_try_it_out试用 更新您的 deps.edn 中的 :deps: ``` org.clojure/clojure {:mvn/version "1.13.0-alpha1"} ``` 使用 Clojure CLI(任意版本)启动 REPL: ``` clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha1"}}} ```

相似文章

Elixir v1.20 发布:现为渐进类型语言

Lobsters Hottest

Elixir v1.20 引入了基于集合论的渐进类型,能够实现类型推断和可验证的缺陷检测,而无需开发者添加注释,这标志着该语言演进的重大里程碑。

ClojureScript 迎来 Async/Await

Hacker News Top

ClojureScript 1.12.145 通过 ^:async 提示引入原生异步函数支持,实现与 JavaScript async/await 的直接互操作,无需额外依赖。

卫兵!卫兵

Lobsters Hottest

探讨 Elixir 中一个令人惊讶的行为:`is_map_key/2` 守卫可能导致守卫失败而非返回 false,从而破坏了布尔运算符的可交换性。

jank 现已拥有自己的自定义 IR

Lobsters Hottest

jank 是一种 Clojure 方言,现已引入一种在 Clojure 语义层面设计的自定义中间表示,以实现更好的优化并与 JVM 竞争。