我是 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/