我喜欢节省6个按键,在我看来,“fn”作为“function”或“lambda”的替代品,完全值得这个代价。但我预料到 if-seq/when-seq 会有一些代价。主要是侵蚀 Clojure 的一些好东西。
我喜欢 seq 是一个简单的习惯用法,出现在所有上下文中。
我喜欢在无需担心复杂的转换的情况下思考条件逻辑。
我喜欢序列库作为一个独立于语言的库外观(即使它略有误导)。
我对 Clojure 与真值的有利交易感到敬畏。
为了改善我对重构的投诉,“if-seq”可以被称为“if-let-seq”,并添加一个“let-seq”,这样添加/删除条件就只需要涉及“if-”或“when-”前缀。 但是这样一来,你失去了6个键位中的4个,忘记了letfn的教训,并且滑向了一个带有“-seq”形式的替代形式的宇宙。
接下来是“some-seq”、“remove-seq”、“take-while-seq”等等,同样是将seq与内嵌的测试一起组合。
在这所有的负面评论之后,我要说的是,如果有人想为我节省一些键位,我非常喜欢Java var-args互操作,这样我就不需要写出“maaaaakkkkeee aaaannnn arrraaaayyy ooffff ttthhiiiinnngggsss”。