3

概念による状態はわかっていますが、この例でどのように実装されているか理解できません: 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:

(set-state! :circles circles*)

135-140:

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

それらの回線で何が起こっているのですか?

セット状態!はQuilメソッドであり、その実装はhttps://github.com/quil/quil/wiki/set~state%21にあります。

4

1 に答える 1

3

簡単な答え:applet.cljで定義されたアトムを使用しています

これは、17行目のcore.cljで定義されている関数であり、アプレットのメタデータに付加されたアトムとして格納されている状態情報を抽出します。(:state (meta (current-applet))状態を設定するには、アプレットオブジェクトからメタデータ(マップ)を抽出する呼び出しによって現在の「状態」を格納したアトムを検索し、:stateキーに格納されているアトムを返します。reset!次に、このアトムに新しい値を入れるように呼び出します。nsこれは、宣言の(:use quil.core)に含まれます。

于 2013-03-26T18:26:08.363 に答える