3

我正在以功能(功能)模式在 Clojure/Quil 中编写草图。

有时,我希望能够检查当前的情况state

但是,当我尝试state从 REPL 调用 Quil's 时,我得到以下信息:

(q/state) ==>
NullPointerException   clojure.core/deref-future (core.clj:2208)

不确定这是否相关,但来自 REPL 的绘图函数也会发生同样的情况:

(q/rect 0 0 10 10)

如何获取当前状态以在 REPL 中检查它?

4

2 回答 2

1

由于您没有发布代码,因此不确定您在谈论哪个功能,所以这有点盲目。

您可以尝试查看state-atom

(require '[quil.core :as q])

;; both should do the same

@(q/state-atom)
(q/state) ;; is that what you were doing ?

您似乎引用的状态函数可选地接受一个参数,例如,并在没有传递参数时返回状态原子:

(q/state :image)

在任何情况下,查看 Clojure 库的测试通常是一个好主意,并且这种情况下的代码似乎有很好的文档记录。

于 2016-07-12T11:11:49.940 回答
1

为了在 REPL 中直接调用 Clojure/Quil 函数,需要用当前的草图包装它们:

(quil.applet/with-applet hello-quil.core/hello-quil 
  (quil.core/random 10)) 

要访问state你可以这样做:

(require '[quil.core :as q])

(quil.applet/with-applet hello-quil.core/hello-quil 
  (q/state)) 

这直接取自 Quil wiki:Dynamic Workflow (for REPL)

于 2019-09-02T07:12:03.283 回答