سؤال

أنا أستخدم "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)))))

أو استخدام أي وظيفة/المرجع الخارجي آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top