将矢量连接到普通关键字或关键字矢量的惯用法

时间:2015-09-22 22:03:51

标签: vector clojure keyword

寻找最简单或最惯用的方式来处理可能是简单关键字或关键字矢量的输入。也许是将普通关键字转换为列表的函数。试图避免使用if子句,并试图避免过多的函数链接。

 (defn togethr [v1]
   (into [] (flatten (into [:a] (vector v1))))

 (togethr :b) 
 ; => [:a :b]

 (togethr [:b :c])
 ; => [:a :b :c]

在这里,我链接了4个函数调用,我怀疑有一种更简单(更惯用)的方式。

2 个答案:

答案 0 :(得分:2)

在这样的情况下使用if并不罕见。它将其归结为一个函数调用和一个if表达式:

SUB

答案 1 :(得分:2)

亚瑟的回答很好,但回到更广泛的背景,拥有可能是关键字的参数或关键字集合通常是反模式。更改调用代码以更一致地传递关键字向量可能更好。 Stuart Sierra甚至为此创造了一个术语:‘heisenparameter’