gpt4 book ai didi

clojure - 从 hashmap 向量构建 condp

转载 作者:行者123 更新时间:2023-12-01 11:36:00 25 4
gpt4 key购买 nike

我想从 hashmap 构建一个动态 condp。我有以下结构:[{ :value 50 :ret "value50"} { :value 100 :ret "value100 }]

我想动态创建以下 condp:

(condp < n
50 "value50"
100 "value100"
"default")

我必须使用宏来创建这个表达式吗?

最佳答案

来自 (doc condp) =>

...
对于每个子句,评估 (pred test-expr expr)。如果它返回逻辑真,则该子句匹配。
...

这意味着在平均情况下,您将进行 m/2 次比较,其中 m 是 HashMap 中的条目数,因此如果性能在您的场景中很重要,您可能会找到更好的解决方案。

无论如何,这里有一个替代解决方案,我并不是说它更有效,只是对于像我这样的普通编码人员来说更容易阅读

(def n 90)
(def clauses (hash-map 50 "value50", 100 "value100"))
(get clauses (first (filter #(< n %) (sort (keys clauses)))) "default")

编辑以确保按顺序评估子句

关于clojure - 从 hashmap 向量构建 condp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com