In [4]:
(defn hello[name]
(println "Hello,"name))


Out[4]:
#'clojure.core/hello

作用

语法糖

对应函数 </tr>

注释

; text 

单行注释

</td>

宏(comment text)可以用来写多行注释 </tr>

字符 (Java char 类型)

\char \tab
\newline \space
\uunicode-hex-value

(char ascii-code)
(char \uunicode) </tr>

字符串 (Java String 对象)

"text"

(str char1 char2 ...)
可以把各种东西串成一个字符串 </tr>

关键字是一个内部字符串; 两个同样的关键字指向同一个对象; 通常被用来作为map的key

:name

(keyword "name") </tr>

当前命名空间的关键字

::name

N/A </tr>

正则表达式

#"pattern"

(re-pattern pattern) </tr>

逗号被当成空白(通常用在集合里面用来提高代码可读性)

, (逗号)

N/A </tr>

链表(linked list)

'(items)
(不会evaluate每个元素)

(list items)
会evaluate每个元素 </tr>

vector(和数组类似)

[items]

(vector items) </tr>

set

#{items}
建立一个hash-set

(hash-set items)
(sorted-set items) </tr>

map

{key-value-pairs}
建立一个hash-map

(hash-map key-value-pairs)
(sorted-map key-value-pairs) </tr>

给symbol或者集合绑定元数据

#^{key-value-pairs} object
在读入期处理

(with-meta object metadata-map)
在运行期处理 </tr>

获取symbol或者集合的元数据

^object

(meta object) </tr>

获取一个函数的参数列表(个数不定的)

& name

N/A </tr>

函数的不需要的参数的默认名字

_ (下划线)

N/A </tr>

创建一个java对象(注意class-name后面的点)

(class-name. args)

(new class-name args) </tr>

调用java方法

(. class-or-instance method-name args) 或者
(.method-name class-or-instance args)

N/A </tr>

串起来调用多个函数,前面一个函数的返回值会作为后面一个函数的第一个参数;你还可以在括号里面指定额外参数;注意前面的两个点

(.. class-or-object (method1 args) (method2 args) ...)

N/A </tr>

创建一个匿名函数

#(single-expression)
% (等同于 %1), %1, %2来表示参数

(fn [arg-names] expressions) </tr>

获取Ref, Atom 和Agent对应的valuea

@ref

(deref ref) </tr>

get Var object instead of
the value of a symbol (var-quote)

#'name

(var name) </tr>

syntax quote (使用在宏里面)

`

none </tr>

unquote (使用在宏里面)

~value

(unquote value) </tr>

unquote splicing (使用在宏里面)

~@value

none </tr>

auto-gensym (在宏里面用来产生唯一的symbol名字)

prefix#

(gensym prefix ) </tr> </tbody> </table>


In [2]:



Out[2]:
nil

In [ ]: