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

欢迎!请查阅关于页面以获取更多关于该功能的信息。

0
文档
重新标记

我在想,《clojure.zip/next》的文档字符串是否可能对一些人产生误导,内容如下:

将层次结构中的位置移动到下一个,深度优先。当到达末尾时,返回可以通过end?检测的特定位。如果已经在末尾,则保持在结尾位置。
一些人可能会在没有更多信息的情况下认为zipping器的末尾是zipping器的最后一个节点,并在那个点调用next将会使zipping器定位在最后一个节点上。
据我理解(这可能并不远),当你在zipping器的最后一个节点之后调用next时,会出现Clojure zipping器的末尾状态,此时zipping器不再可导航或更新。

你仍然可以调用root(或node,在这种情况下与root等效)和end?,但除此之外,我想,胜负已定。

当在末尾时,有效的调用是end?、next和root。

  • 如果你觉得文档字符串不是一个恰当的位置,那么zipping器概述或许可以更加详细地阐述?
  • clojure.zip

以下是一些显示行为的相关代码

(require '[clojure.zip :as czip])
(->> [1 2 3]
     czip/vector-zip
     (iterate czip/next)
     (take 10)
     (map (juxt czip/node czip/end?)))
;; => ([[1 2 3] false]
;;     [1 false]
;;     [2 false]
;;     [3 false]
;;     [[1 2 3] true]
;;     [[1 2 3] true]
;;     [[1 2 3] true]
;;     [[1 2 3] true]
;;     [[1 2 3] true]
;;     [[1 2 3] true])

《next》的文档字符串可能需要更多地解释“末尾”是什么,到达末尾状态意味着什么。可能是这样的:

将层次结构中的位置移动到下一个,深度优先。
当到达末尾(在最后一个节点之后)时,会返回可通过end?检测的特定位。如果已经到达末尾,将保持在那个位置。
在末尾时,有效的调用是end?、next和root。

如果文档字符串不是一个合适的位置,那么zipping器概述或许可以提供更详细的解释?

1 个答案

0

"返回一个特殊的定位"是清晰的:折纸的结束标记不是节点之一。

《韦伯斯特新编词典》(1956年)将“特殊的”定义为“独特的;区分开来的”。至于“特殊值”在计算机科学中的定义,我在网上没有找到,但是OpenAI Chat给出了正确的答案,所以它一定藏在某个地方:“术语‘特殊值’通常指在数据结构或系统中具有特殊意义或目的的特定值。此值通常用作标记或哨兵,用于指示数据段的开始或结束,或表示某种条件或状态。例如,在链表数据结构中,值“NULL”通常用作特殊值,用于指示列表的末尾。”

...