小编mid*_*doc的帖子

'if'有多个表达式抛出NullPointerException

我对这种行为有点疑惑if.以下代码工作正常:

(if true 
  (let [x "whatever"]
    (println "TRUE 1")
    (println "TRUE 2")))
Run Code Online (Sandbox Code Playgroud)

收益:

TRUE 1
TRUE 2
nil
Run Code Online (Sandbox Code Playgroud)

但是如果let表达式被删除:

(if true 
  (
    (println "TRUE 1")
    (println "TRUE 2")))
Run Code Online (Sandbox Code Playgroud)

它还返回一个NullPointerException:

TRUE 1
TRUE 2
NullPointerException   user/eval8051 (NO_SOURCE_FILE:4)
Run Code Online (Sandbox Code Playgroud)

我怀疑是因为println回归了nil.但是,为什么它在let引入时会起作用?有一个更好的方法吗?

clojure

1
推荐指数
1
解决办法
95
查看次数

标签 统计

clojure ×1