gpt4 book ai didi

clojure - 如何访问 LazySeq 值

转载 作者:行者123 更新时间:2023-12-02 21:28:07 26 4
gpt4 key购买 nike

我正在玩wit/duckling图书馆。它是用 clojure 编写的,我以前没有 clojure 经验。通过遵循其文档,我得到了变量的值

({:dim :time, :body "20 minutes from now", :value {:type "value", :value "2016-08-03T10:50:56.000+05:30", :grain :second, :values ({:type "value", :value "2016-08-03T10:50:56.000+05:30", :grain :second})}, :start 21, :end 40})

经过一些谷歌搜索后,我发现它是 clojure.lang.LazySeq 并且以冒号(:)开头的标记是关键字而不是键。我想访问 :values 关键字的值,我也阅读了 clojure 基础知识,但无法访问 :values 关键字的值。我希望一定有一种方法可以通过编写 lazy_seq[:values] 来获取它的值。有人可以帮忙吗?

最佳答案

试试这个:

> (use 'clojure.pprint)

> (def stuff '({:dim :time, :body "20 minutes from now", :value {:type "value", :value "2016-08-03T10:50:56.000+05:30", :grain :second, :values ({:type "value", :value "2016-08-03T10:50:56.000+05:30", :grain :second})}, :start 21, :end 40}))

我们使用“ pretty-print ”函数pprint来获得数据结构的良好嵌套输出:

> (pprint stuff)
({:dim :time,
:body "20 minutes from now",
:value
{:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second,
:values
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})},
:start 21,
:end 40})

所以我们有一个只有一项的列表,它是键 :dim :body :value :start 和 :end 的映射。 :value 键的值是键 :type、:value、:grain、:values 的另一个映射。

因此,要取消嵌套,

(pprint (first stuff))
{:dim :time,
:body "20 minutes from now",
:value
{:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second,
:values
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})},
:start 21,
:end 40}

> (pprint (:value (first stuff)))
{:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second,
:values
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})}

> (pprint (:values (:value (first stuff))))
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})

您还可以使用线程优先宏->,如下所示:

> (pprint (-> stuff first :value :values))
({:type "value",
:value "2016-08-03T10:50:56.000+05:30",
:grain :second})

使得原始嵌套结构stuff流过函数first:value:values(按顺序)。

关于clojure - 如何访问 LazySeq 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38735206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com