dictionary - 映射接受单数或集合

标签 dictionary clojure

在 Clojure 中是否有更好的方法来做到这一点?

(if (coll? coll)
  (map my-fn coll)
  (my-fn coll)

my-fn 将应用于输入 collcoll 可以是单一的也可以是集合。

如果我不检查 coll?,单独使用 map 会抛出 IllegalArgumentException,因为不知道如何从 xxx 创建 ISeq。

最佳答案

你的代码很好(尽管我会重命名变量 coll,因为你实际上不知道它是否是一个集合,这可能会让读者感到困惑)。

但是,我建议这整 block 代码看起来可疑地像代码味道 - 在我看来,动态类型有点太过分/试图变得有点太聪明:从“cleverness considered harmful”的意义上来说。

要考虑的替代想法:

  • 编写单独的函数来处理集合和单个值。理由是它们在概念上是不同的数据类型,因此应该进行不同的处理。

关于dictionary - 映射接受单数或集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029395/

相关文章:

Clojure:如何生成 'trie' ?

haskell - 函数式语言的显着特征

function - 为什么有些?在 Clojure 中将 false 作为参数时返回 true?

javascript - jquery获取矩形宽度和高度传单

python - 使用键将字典与numpy结合

python - Django - 奇怪的字典行为

python - 使用自己的密码字典加密

java - Clojure写文件速度慢

macros - 使用 clojure 宏在 reify 调用中自动创建 getter 和 setter

c++ - 使用字符串键初始化结构映射