如果求值,为什么这两个表达式都在这个 clojure 中?
Why are both expressions in this clojure if evaluated?
如果我用
创建一个新项目
lein new quil foo
然后将 src/foo/core.clj 减少到
(ns foo.core
(:require [quil.core :as q]
[quil.middleware :as m]))
(defn draw [state]
(if (< (rand) 0.5)
(q/line 0 0 500 500)
(q/line 0 500 500 0)))
(q/defsketch foo
:title "Try this at home"
:size [500 500]
:draw draw
:features [:keep-on-top]
:middleware [m/fun-mode])
并用 (use 'foo.core)
评估 lein repl
中的程序,两条线都被绘制(即我得到一个大 X)。 (if (< (rand) 0.5) true false)
按预期工作,那么我缺少什么?
大概draw
被调用了很多次——如果它只绘制一次屏幕就不是一个交互性很强的框架了!有些时候,你随机选择画一条线,有时又画另一条线;而且您也永远不会删除。结果,他们两个都出现在屏幕上。
如果我用
创建一个新项目lein new quil foo
然后将 src/foo/core.clj 减少到
(ns foo.core
(:require [quil.core :as q]
[quil.middleware :as m]))
(defn draw [state]
(if (< (rand) 0.5)
(q/line 0 0 500 500)
(q/line 0 500 500 0)))
(q/defsketch foo
:title "Try this at home"
:size [500 500]
:draw draw
:features [:keep-on-top]
:middleware [m/fun-mode])
并用 (use 'foo.core)
评估 lein repl
中的程序,两条线都被绘制(即我得到一个大 X)。 (if (< (rand) 0.5) true false)
按预期工作,那么我缺少什么?
大概draw
被调用了很多次——如果它只绘制一次屏幕就不是一个交互性很强的框架了!有些时候,你随机选择画一条线,有时又画另一条线;而且您也永远不会删除。结果,他们两个都出现在屏幕上。