函数键不匹配导致Clojure空指针异常

函数键不匹配导致Clojure空指针异常,clojure,Clojure,我正在为勇敢和真诚的人完成Clojure的开始: 但是,当我尝试在CIDER REPL中运行以下代码时,我得到了一个空指针异常: (min [{:a 1 :b 3} {:a 5 :b 0}]) 我试图在代码中识别错误的来源。任何帮助都将不胜感激。函数comparator over maps使用传递给它的关键字向量来查找地图中的值。在这种情况下,您传递的地图具有键:a和:b,但您对min的定义是请求键:lat和:lng,这两个键不存在,因此它接收到nil,这是NPE的原因。如果更改一组或另一组关

我正在为勇敢和真诚的人完成Clojure的开始:

但是,当我尝试在CIDER REPL中运行以下代码时,我得到了一个空指针异常:

(min [{:a 1 :b 3} {:a 5 :b 0}])

我试图在代码中识别错误的来源。任何帮助都将不胜感激。

函数
comparator over maps
使用传递给它的关键字向量来查找地图中的值。在这种情况下,您传递的地图具有键
:a
:b
,但您对
min
的定义是请求键
:lat
:lng
,这两个键不存在,因此它接收到
nil
,这是NPE的原因。如果更改一组或另一组关键字以进行匹配,则示例应有效,例如:

(min [{:lat 1 :lng 3} {:lat 5 :lng 0}])

根据@BlackBear的评论,我在苹果酒REPL中重新运行代码,如下所示:

(min [{:lat 1 :lng 3} {:lat 5 :lng 0}])
它给出了正确的答案:

=> {:lat 1, :lng 0}

谢谢你的帮助

地图的按键不匹配谢谢@BlackBear!
=> {:lat 1, :lng 0}