您好,匿名用户

clojure agent 出现NullPointerException

0 投票

如下代码:

(def my-agent (agent 0))
=> #'book-code.core/my-agent

(send my-agent #((Thread/sleep 2000) (inc %)))
=> #object[clojure.lang.Agent 0x61038f78 {:status :ready, :val 0}]

(await my-agent)
NullPointerException   book-code.core/eval2156/fn--2157 (form-init1151544857991031781.clj:1)

@my-agent
=> 0

(send my-agent inc)
NullPointerException   book-code.core/eval2156/fn--2157 (form-init1151544857991031781.clj:1)

为什么之后的 await 和 send 都会出现NullPointerException

用户头像 提问 2017年 5月26日 @ Malphite 中士 (1,401 威望)
分享到:

1个回答

0 投票

因为你的匿名函数 #((Thread/sleep 2000) (inc %)) 是将 (Thread/sleep 200) 作为了操作符,相当于将 nil 作为函数调用了,当然会产生 NPE。你需要在函数中前面加上 do

所以这个问题与 agent 无关。

用户头像 回复 2017年 5月26日 @ Twisted Fate 中士 (1,154 威望)
提一个问题:

相关问题

0 投票
1 回复 155 阅读
用户头像 提问 2014年 1月28日 @ Kayle 中士 (1,022 威望)
0 投票
1 回复 59 阅读
0 投票
1 回复 146 阅读
用户头像 提问 2014年 11月2日 @ Pantheon 中士 (1,263 威望)
0 投票
1 回复 58 阅读
用户头像 提问 2016年 5月13日 @ Skarner 中士 (1,293 威望)
0 投票
1 回复 59 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...