我注意到在Clojure中,通常使用关键字作为地图中的键,而在其他没有这种概念的语言中,通常使用字符串.
使用关键字而不是字符串或其他类型有什么好处?
get自己作为关键参数一样.这是方便的情况下,如"我希望所有这些人的电话号码" - (map :phone-no people)对比(map #(get % "phone-no") people)使用关键字let和其他解构工具也很方便:
(let[{:keys [foo bar]} {:foo 1 :bar 30}]
(+ foo bar)) ;;=>31
Run Code Online (Sandbox Code Playgroud)
但这确实适用于字符串键以及使用不太常见的:strs解构.