在 Clojure 中向代理类添加字段
我使用“代理”来扩展 Clojure GUI 应用程序中的各种 Swing 类,通常使用如下所示的代码:
(def ^JPanel mypanel
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(.drawImage g background-image 0 0 nil))))
这很好用,但我不知道如何向新扩展的类添加其他字段,例如背景图像是一个可以随后更新的字段。这在 Java 中是非常简单且常见的做法。
在 Clojure 中有没有好的方法可以做到这一点?或者是否有另一种首选方法可以达到相同的效果?
I'm using "proxy" to extend various Swing classes in a Clojure GUI application, generally with code that looks something like:
(def ^JPanel mypanel
(proxy [JPanel] []
(paintComponent [#^Graphics g]
(.drawImage g background-image 0 0 nil))))
This works well but I can't figure out how to add additional fields to the newly extended class, for example making the background-image a field that could be subsequently updated. This would be pretty easy and common practice in Java.
Is there a good way to do this in Clojure? Or is there another preferred method to achieve the same effect?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用类似这样的内容:
或使用任何其他外部函数/引用。
You can use something like this:
or use any other outer function/ref.