Clojure中的:some-parameter是什么?代码里的:next定义在哪?
Clojure中
:next这类关键字的解释 :next是Clojure的关键字(Keyword),属于语言内置的基本数据类型,并非函数或宏,所以你在when的文档里找不到它的相关说明。
关键字的核心用法
关键字最常用作Map的键,用来快速获取对应的值。比如代码里的(:next x),等价于(get x :next),作用就是从Mapx中取出键为:next对应的值。
结合你的代码理解
在这段relay函数中:
(when (:next x) ...):先判断Mapx里:next对应的值是否为逻辑真(非nil、非false),如果是则执行后续的send操作,把消息传递给:next指向的对象。(:report-queue x):同样是从Mapx中取出:report-queue对应的队列对象,之后调用.put方法将数据存入队列。
关于“定义”的疑问
关键字不需要提前声明或定义,你可以直接使用任意:xxx形式的关键字。:next和:report-queue的具体含义,由创建Mapx的代码决定——比如某处会构造包含:next(可能指向一个Agent)和:report-queue(指向一个队列)的Map,并将其作为参数传给relay函数。
内容的提问来源于stack exchange,提问作者julien nascimento
相关产品推荐
相关产品推荐

