我有一个令牌扫描器,它只是返回nil我不感兴趣的字符。conj我不想将它们添加到我的令牌向量中,然后将它们全部删除,而是简单地不添加它们。
我在用着
;; dont conjoin if value false
(defn condj [v val]
(cond-> v, val (conj val)))
Run Code Online (Sandbox Code Playgroud)
去做这个。是否有特定的运算符或更简洁的实现?
对我来说,一个新的 Clojurian,当涉及到参数顺序/位置时,一些核心函数似乎相当违反直觉和令人困惑,这是一个例子:
> (nthrest (range 10) 5)
=> (5 6 7 8 9)
> (take-last 5 (range 10))
=> (5 6 7 8 9)
Run Code Online (Sandbox Code Playgroud)
也许它背后有一些我还没有看到的规则/逻辑?
我拒绝相信 Clojure 核心团队做出了如此多出色的技术决策,却忘记了函数命名/参数排序的一致性。
还是我应该记住它的原样?
谢谢
有点题外话:
rand& rand-intVS random-sample- 另一个例子,函数命名似乎不一致,但这是一个很少使用的函数,所以没什么大不了的。