Clojure 2024 状态调查中分享你的想法!

欢迎!请参阅关于页面以了解更多关于如何使用此功能的信息。

0
文档
已关闭

get的实现检查顺序为

  • ILookup
  • null
  • Map
  • IPersistentSet
  • String或Java数组

get的文档字符串目前读作

"返回与密钥关联的值,如果密钥不存在则返回not-found或nil。"

知道Clojure的数据模型,可以合理推断这适用于map和关联数据。它在集合、字符串和数组上工作则不那么明显,最好提及这一点。

补丁: clj-2249-3.patch

以以下注释关闭: 已修复在1.11.0-alpha3中

7 答案

0

由:

评论内容:我尽量保持了简洁的风格,如果您对措辞有建议,我很乐意接受。我还稍微修改了第一句话,因为我发现它难以理解,但这与其他内容无关,如果需要可以撤销更改。

0

由:

我认为第一句话应该保持原样。

所有这些集合操作在简洁地表达意图的同时,还涵盖了特殊案件(通常与Java类型有关)。我认为这里的意图是涵盖“关联数据结构”的查找,这包括Clojure maps、records、vectors、Java maps以及其他不太明显的事情,例如奇特的ILookup实现。

对我来说,不明显包含的有:Clojure的sets(我还没有审查,但毫无疑问,这在许多特殊情况下被隐式使用),以及Java的特殊案例,即字符串和数组。举例来说,我指的是countnth,它们也有点奇怪。

所以可能用一句话来概括: "get也可以在集合上使用以返回包含的值,并在字符串和数组上按索引返回值。" ?

顺便说一下,我们还需要在规范中回答这些问题。我预计规范核心函数的行为将推动更多这样的棘手问题。

0

由:daveliepmann发表的评论

>>我将第一句话保持原样。

重新表述是否欢迎在单独的问题中?目前,“映射到的值”的指代不明确。我同意这很难理解。

0

由:

(链接:~daveliepmann) 不,谢谢

0

由:

附加了新的补丁。

0

由:

对文档字符串添加部分进行了修改

0
参考:[CLJ-2249](https://clojure.atlassian.net/browse/CLJ-2249)(由plexus报告)
...