gpt4 book ai didi

clojure - 为什么这个 clojure hello world 会抛出 NullPointerException?

转载 作者:行者123 更新时间:2023-12-03 22:48:51 25 4
gpt4 key购买 nike

这是我的第一个程序:

(println "hello, what is your name?")
(let [myname (read-line)]
((println (str "hello " myname))))

它有点工作:
hello, what is your name?
Joel
hello Joel
Exception in thread "main" java.lang.NullPointerException, compiling:(/home/joel/workspace/coolstuff/clojure/hello.clj:1:38)
at clojure.lang.Compiler.load(Compiler.java:7142)
at clojure.lang.Compiler.loadFile(Compiler.java:7086)
at clojure.main$load_script.invoke(main.clj:274)
at clojure.main$script_opt.invoke(main.clj:336)
at clojure.main$main.doInvoke(main.clj:420)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:379)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.NullPointerException
at user$eval3.invoke(hello.clj:3)
at clojure.lang.Compiler.eval(Compiler.java:6703)
at clojure.lang.Compiler.load(Compiler.java:7130)
... 9 more

为什么会抛出异常?

最佳答案

((println (str "hello " myname)))

...正在将 println 返回的东西作为函数运行。

println 不返回任何内容。因此,它返回 null。因此,将其返回值作为函数运行会引发 NullPointerException。

去掉多余的括号:
(println (str "hello " myname))

关于clojure - 为什么这个 clojure hello world 会抛出 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821800/

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