clojure语法'[]的含义是什么?

Nic*_*ick 3 clojure

'()是一种语法糖(quote ()).但是什么'[]意思呢?引用一个向量?

例如:

(use '[clojure.test :as t])

(.get '[a b c] 1)

(.containsAll '[a b c] '[b c])

((fnth 5) '[a b c d e])
Run Code Online (Sandbox Code Playgroud)

Leo*_*tny 13

正是.'是一个同义词quote,所以

'[a b c]
Run Code Online (Sandbox Code Playgroud)

只是

(quote [a b c])
Run Code Online (Sandbox Code Playgroud)

quote 阻止评估Clojure代码,因此引用整个向量与引用它的每个元素基本相同:

['a 'b 'c]
Run Code Online (Sandbox Code Playgroud)

它允许您生成符号向量,而无需显式调用symbol函数:

[(symbol "a") (symbol "b") (symbol "c")]
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的解释!`user>(='[abc] ['a'b'c] [(符号"a")(符号"b")(符号"c")])true (2认同)