gpt4 book ai didi

clojure延迟函数执行

转载 作者:行者123 更新时间:2023-12-02 07:00:19 29 4
gpt4 key购买 nike

好的,这就是我想做的

(defn addresses [person-id]
;addresses-retrival )

(defn person [id]
(merge {:addresses (addresses id)} {:name "john"}))

在上面的 person 函数中,我希望仅按需检索地址,就像我这样做时那样

(:addresses (person 10)) 

而不是当

(person 10)

作为 clojure 新手,我不确定我的做法是否正确。

最佳答案

您可以使用延迟。

(defn person [id]
(delay {:addresses (addresses id) :name "john"}))

(第二个人)将返回一个延迟的值,而不进行任何评估。要访问内容并评估延迟的对象,请使用force或deref(或@)。

(:addresses @(person 5))

或者,您可以仅将延迟放在地址上。

(defn person [id]
{:addresses (delay (addresses id)) :name "john"})

根据您的问题,这可能会更好。

它允许定义:

(defn get-address [person]
@(:address person))

这将获取延迟的地址并强制它。(强制是指第一次计算,其他时候取强制结果)。

关于clojure延迟函数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542236/

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