clojure - 如何在 Clojure 中将字符串附加到向量

标签 clojure

我是 Clojure 和一般函数编程的新手。

我想执行一组 if/else,如果条件为真,我想在列表中附加一些字符串。

在 JavaScript 中会是这样的:

const a = 1;
const b = 2;
const c = 1;

const errors = [];

if (a !== b) {
  errors.push("A and B should not be different");
}

if (a == c) {
  errors.push("A and C should not be equal");
}

console.log(errors);

我如何使用 Clojure 完成此任务?

最佳答案

cond->适用于有条件地修改某些值,并将这些操作串联在一起:

(def a 1)
(def b 2)
(def c 1)

(cond-> []
  (not= a b) (conj "A and B should not be different")
  (= a c) (conj "A and C should not be equal"))

cond-> 的第一个参数是要通过右侧表单进行线程化的值;这是这里的空向量。如果不满足 LHS 条件,它将返回该空向量。对于满足的每个条件,它将向量值线程化为 RHS 形式,这里是 conj 用于向向量添加内容。

查看 ->->> 宏以了解其他线程示例。

关于clojure - 如何在 Clojure 中将字符串附加到向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716397/

相关文章:

clojure - 对类名的解析感到困惑

clojure - 序列的最大值,其值由 key 函数确定,其中 key 返回一个向量

recursion - 如何在 Clojure 中递归地展平任意嵌套的向量和映射?

Clojure:在结构图中获取单个值和映射

java - 将像素映射到数据

clojure - 如何删除嵌套的 clojure 向量

clojure - Clojure 程序的特定软件指标

clojure - 如何强制 Leningen 使用特定版本的 swank-clojure?

emacs - Cider 有像 Cursive(IntelliJ IDEA) 那样的实时模板吗?

clojure.core/or 部分函数适用于第一个参数,但不适用于第二个参数