小编Maa*_*ens的帖子

cond->有多个值

我遇到了很多情况,如果满足某个条件,则需要"更新"两个(或甚至三个)值的向量,否则单独使用.例:

(let [val1 some-value
      val2 some-other-value
      [val1, val2] (if something-true 
                       (first-calculation val1 val2 some-other-arg)
                       [val1, val2])
      [val1, val2] (if something-else-true 
                       (second-calculation some-other-arg val1 val2)
                       [val1, val2])
      ...etc...)
Run Code Online (Sandbox Code Playgroud)

其中假设第一次计算和第二次计算返回带有可能更新值的向量[val1,val2].

这种代码风格不仅笨重,而且每次都可能由于向量创建和解构而产生一些不必要的开销.

有没有人建议如何使用vanilla Clojure改进此代码,而不创建宏?换句话说,我正在为多个值寻找一种cond->.

clojure

3
推荐指数
1
解决办法
193
查看次数

标签 统计

clojure ×1