gpt4 book ai didi

java - 将字段添加到 Clojure 中的代理类

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:11 25 4
gpt4 key购买 nike

我正在使用“代理”在 Clojure GUI 应用程序中扩展各种 Swing 类,通常使用如下代码:

(def ^JPanel mypanel 
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(.drawImage g background-image 0 0 nil))))

这很好用,但我不知道如何向新扩展的类添加额外的字段,例如使背景图像成为一个可以随后更新的字段。这在 Java 中是非常简单和常见的做法。

在 Clojure 中有实现此目的的好方法吗?或者是否有另一种首选方法可以达到相同的效果?

最佳答案

你可以这样使用:

(defn ^JPanel mypanel [state]
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(do
(comment do something with state)
(.drawImage g background-image 0 0 nil)))))

或使用任何其他外部函数/ref。

关于java - 将字段添加到 Clojure 中的代理类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com