clojure - 如何在 Clojure 的代理宏中使用“this”
问题描述
我有这样的代码:
(def prx (proxy [java.lang.Runnable] []
(run
([] (println "0000" 'this) 1))
(toString ([] (str "------" 'this)))))
(.toString prx)
如何在代理宏中获取“this”引用?
解决方案
您实现的每个方法都将this
作为它们的第一个参数。
请参阅文档:
方法 fns 是闭包,可以捕获调用代理的环境。每个方法 fn 都需要一个附加的隐式第一个参数,该参数绑定到“this”。
另外,请查看这篇文章,了解何时使用proxy
vs reify
vs的详细信息gen-class
。
推荐阅读
- http - Informatica如何使用REST API来获取数据,WEB服务使用authorization.bearer token
- flutter - 如何从颤动的列表视图中的项目元素获取渲染框
- apache-spark - Java Spark Dataset MapFunction - 任务在没有任何类引用的情况下不可序列化
- php - 用brew安装了PHP,但仍然无法正常工作
- discord.py - 如何让机器人阅读提及?
- c - 在 C 中记录所有新进程
- python-3.x - 在行为python中重用特征文件之间的公共步骤定义
- javascript - 使用 react-daterange-picker 的打字稿错误“没有重载匹配此调用。”
- docker - JKube 在 GitHub 存储库上部署的 Pod 在 MicroK8 中部署时导致 401
- r - 过滤最大值大于限制的组