私は優先順位に基づいてマップから値を引き出す機能を持っています。現在、私はひどい重さの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)
)
)
)
)
)
)
)
これが正解です。 –
... nil値も取得しない場合は除きます。 –
...または 'false'それが問題であれば、適切な調整については私の答えを見てください。 –