gpt4 book ai didi

clojure - Clojure 状态如何工作?

转载 作者:行者123 更新时间:2023-12-02 00:10:39 25 4
gpt4 key购买 nike

我从概念上知道状态是什么,但我不明白它是如何在这个例子中实现的: https://github.com/quil/quil/blob/master/examples/gen_art/31_oo_circles.clj

我就是看不出来。状态实现发生在 100、109 和 137 行:

98-100:

(defn mouse-released []
(add-circles (state :circles)))

109:

(设置状态!:circles circles*)

135-140:

(defn draw []
(background 255)
(let [circles* (state :circles)
circles (swap! circles* update-circles)]
(doseq [c circles]
(draw-circle c))))

这些线上发生了什么?

set-state!是一个Quil方法,它的实现可以在https://github.com/quil/quil/wiki/set~state%21找到

最佳答案

简短的回答:它使用 atom在applet.clj中定义

这是在core.clj 中定义的函数在第 17 行,它提取存储为附加到小程序元数据的原子的状态信息。设置状态首先通过调用 (:state (meta (current-applet)) 找到存储当前“状态”的原子,它从 applet 对象中提取元数据(它是一个映射),然后返回存储在 :state 键中的原子。然后调用 reset! 将新值放入该原子中。它包含在 ns 声明中的 (:use quil.core) 中。

关于clojure - Clojure 状态如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632560/

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