将关键字实现为函数的可选标志的最佳方法是什么?我想进行函数调用,例如:
(myfunction 5)
(myfunction 6 :do-this)
(myfunction 3 :go-here)
(myfunction 2 :do-this :do-that)
使用 defn,我可以定义一个函数,例如:
(defn myfunction [value & flags] ... )
但是flags
变成了一个列表。我可以编写自己的函数来搜索列表,但是核心库中不包含这样的函数,所以我认为它不是惯用的。
我现在使用的是:
(defn flag-set? [list flag] (not (empty? (filter #(= flag %) list))))
(defn flag-add [list flag] (cons flag list))
(defn flag-remove [list flag] (filter #(not= flag %) list))