我有一个函数想要根据优先级顺序从地图中提取一个值。目前我正在将它作为一个嵌套的if结构,这是非常可怕的。我必须相信还有更好的办法。Clojure从基于优先级逻辑的地图提取值
虽然这个工程有更好的方法吗?
(defn filter-relatives [relatives]
(if(contains? relatives :self)
(relatives :self)
(if(contains? relatives :north)
(relatives :north)
(if(contains? relatives :west)
(relatives :west)
(if(contains? relatives :east)
(relatives :east)
(relatives :south)
)
)
)
)
)
)
)
这是正确的答案。 – 2012-02-20 19:45:21
...除非你还想获取零值。 – 2012-02-20 20:13:56
...或“假”。如果这是一个问题,请参阅我的答案进行适当的调整,否则一定要使用这一个。 – 2012-02-20 20:52:12