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