(assoc-in {} [] 1) ;=> {nil 1}
这很可能会抛出异常。
CLJ-373有一个补丁(链接:http://dev.clojure.org/jira/secure/attachment/12897/CLJ-373-nested-ops.patch 文件:CLJ-373-nested-ops.patch)该补丁修复了这个问题(在空键路径上抛出异常),修复了 update-in 相关的破坏行为,并在 get-in 等中记录了空键路径的行为。我可以从这个补丁中提取出 assoc-in 的部分,作为一个单独的补丁,但我非常希望一次性解决所有这些问题,也就是说。
(get-in {} [] :notfound) ;=> {} ; ok (get-in {nil 1} [] :notfound) ;=> {nil 1} ; ok (assoc-in {} [] 1) ;=> {nil 1} ; wat? (assoc-in {nil 0} [] 1) ;=> {nil 1} ; wat? (update-in {} [] identity) ;=> {nil nil} ; wat? (update-in {nil 0} [] inc) ;=> {nil 1} ; wat?