当前位置:  开发笔记 > 编程语言 > 正文

在Clojure中使用关键字作为地图中的键有什么好处?

如何解决《在Clojure中使用关键字作为地图中的键有什么好处?》经验,为你挑选了1个好方法。

我注意到在Clojure中,通常使用关键字作为地图中的键,而在其他没有这种概念的语言中,通常使用字符串.

使用关键字而不是字符串或其他类型有什么好处?



1> Magos..:

    关键字是符号类型,在语义上与字符串区分开来,并且具有较小范围的可表示值.它们可以是命名空间,有对命名空间等合法使用的检查,因此用户可以对EDN关键字密钥更有信心,这意味着他们所期望的比例如具有等效字符串密钥的JSON.

    关键字是实习的,因此关键字的所有实例都指向相同的对象.这对于例如等式检查很有用.

    关键字是函数,就像get自己作为关键参数一样.这是方便的情况下,如"我希望所有这些人的电话号码" - (map :phone-no people)对比(map #(get % "phone-no") people)

使用关键字let和其他解构工具也很方便:

(let[{:keys [foo bar]} {:foo 1 :bar 30}]
  (+ foo bar)) ;;=>31

但这确实适用于字符串键以及使用不太常见的:strs解构.


2.对于clojure 1.7不再适用,请参阅https://github.com/clojure/clojure/blob/master/changes.md#23-keyword-and-symbol-construction它已删除,以使符号创建更高效​​.
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有