إضافة الحقول إلى فئة وكيفية في clojure
سؤال
أنا أستخدم "Proxy" لتوسيع مختلف فئات التأرجح في تطبيق واجهة المستخدم الرسومية clojure ، بشكل عام مع رمز يشبه:
(def ^JPanel mypanel
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(.drawImage g background-image 0 0 nil))))
هذا يعمل بشكل جيد ولكن لا يمكنني معرفة كيفية إضافة حقول إضافية إلى الفصل الممتد حديثًا ، على سبيل المثال جعل صورة الخلفية حقلًا يمكن تحديثه لاحقًا. ستكون هذه ممارسة سهلة ومشتركة في جافا.
هل هناك طريقة جيدة للقيام بذلك في Clojure؟ أم أن هناك طريقة مفضلة أخرى لتحقيق نفس التأثير؟
المحلول
يمكنك استخدام شيء مثل هذا:
(defn ^JPanel mypanel [state]
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(do
(comment do something with state)
(.drawImage g background-image 0 0 nil)))))
أو استخدام أي وظيفة/المرجع الخارجي آخر.
لا تنتمي إلى StackOverflow