używam „proxy” w celu rozszerzenia różnych klas Swing Clojure w aplikacji GUI, zazwyczaj z kodem, który wygląda mniej więcej tak:Dodawanie pól do zastępowanym klasy w Clojure
(def ^JPanel mypanel
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(.drawImage g background-image 0 0 nil))))
Działa to dobrze, ale mogę • wymyślić, jak dodać dodatkowe pola do nowo rozszerzonej klasy, na przykład uczynić obraz tła polem, który można następnie zaktualizować. Byłoby to dość łatwą i powszechną praktyką w Javie.
Czy jest to dobry sposób na zrobienie tego w Clojure? Czy istnieje inna preferowana metoda osiągnięcia tego samego efektu?
bardzo ciekawy pomysł - masz na myśli raczej defn niż def? – mikera
doto wydaje się odpowiednie tutaj: (doto g (.drawImage ...) (...)) – Greg
hmmmm ... ktoś wie, jak Clojure wdraża to wewnętrznie? czy w rzeczywistości dodaje pole do pośredniczonej klasy? – mikera