Clojure извлечение значения из карты на основе приоритетной логики

У меня есть функция, которая хочет вытащить значение из карты на основе порядка приоритетов. В настоящее время я делаю это в виде вложенной структуры if, что ужасно. Я должен верить, что есть лучший способ.

Пока это работает, есть ли лучший способ?

(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)
                         )
                     )
                 )
              )
          )
    )
)
5
задан Y. Adam Martin 20 February 2012 в 15:14
поделиться