2013-03-26 2 views
3

나는 개념으로 어떤 상태를 알고 있지만, 나는 그것이이 예에서 구현되고 어떻게 이해할 수 없다 : https://github.com/quil/quil/blob/master/examples/gen_art/31_oo_circles.cljClojure 상태는 어떻게 작동합니까?

나는 단지 그것을 볼 수 없습니다. 주 구현 라인 (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)))) 

그 (것)들에 일어나고있는 무엇이 윤곽?

set-state!는 그 구현 https://github.com/quil/quil/wiki/set~state%21

+1

Atom 및 Ref와 같은 clojure STM 구문을 알고 계십니까? – Ankur

+1

이 상태에서 "상태"는 var의 이름입니다 (제 생각에는 가장 창의적인 이름이 아닙니다). –

답변

3

에서 짧은 대답 퀼 방법을 찾을 수있다 : 그것은 applet.clj

그것은 상태 정보를 추출 라인 (17)에 core.clj 정의 함수로서 저장된에 정의 atom을 사용하고 애플릿의 메타 데이타에 첨부 된 아톰 상태를 설정하려면 (:state (meta (current-applet))을 호출하여 현재 "상태"를 저장 한 아톰을 찾아 애플릿 객체의 메타 데이터 (지도)를 추출한 다음 : 상태 키에 저장된 아톰을 반환합니다. 그런 다음 reset!을 호출하여이 아톰에 새 값을 입력합니다. ns 선언에 (: use quil.core)에 포함됩니다.

+0

설정 상태가 Quil에서 오는 것을 알고 있지만 내 질문은 정확히 상태를 설정하는 것입니다./할거야? –

+0

의견을 보내 주셔서 감사합니다. –

관련 문제