【问题标题】:Specifying bindings syntax with :as使用 :as 指定绑定语法
【发布时间】:2019-12-29 06:23:43
【问题描述】:

假设我有一个绑定,例如:

loop [[x & more :as tree] tree, minVal 99, maxVal -99]

:as 是做什么的?我试过环顾四周,但找不到任何相关信息。

【问题讨论】:

标签: clojure


【解决方案1】:

https://clojure.org/guides/destructuring 中有一个明确的例子--

(def word "Clojure")
(let [[x & remaining :as all] word]
  (apply prn [x remaining all]))
;= \C (\l \o \j \u \r \e) "Clojure"

这里all 绑定到原始结构(字符串、向量、列表,无论它是什么),x 绑定到字符\Cremaining 是剩余的字符列表。

正如这所展示的,:as 绑定了 原始,预解构值,因此在您的循环示例中,tree 保留其原始值。当该值已经有名称时,这并不是特别有用,但当它本身是返回值或其他尚未命名时,非常很有用。

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多