forked from OnRoadZy/RacketGuideInChinese
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path04.10 引用:quote和'
53 lines (37 loc) · 1.46 KB
/
04.10 引用:quote和'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
4.10 引用:quote和'
引用表产生一个常数:
(quote datum)
datum的语法在技术上被指定为read函数解析为单个元素的任何内容。quote表的值与read将产生给定的datum的值相同。
datum可以是一个符号、一个布尔值、一个数字、一个(字符或字节)字符串、一个字符、一个关键字、一个空列表、一个包含更多类似值的配对(或列表),一个包含更多类似值的向量,一个包含更多类似值的哈希表,或者一个包含其它类似值的格子。
例如:
> (quote apple)
'apple
> (quote #t)
#t
> (quote 42)
42
> (quote "hello")
"hello"
> (quote ())
'()
> (quote ((1 2 3) #("z" x) . the-end))
'((1 2 3) #("z" x) . the-end)
> (quote (1 2 . (3)))
'(1 2 3)
正如上面最后一个示例所示,datum不需要匹配一个值的格式化的打印表。一个datum不能作为从#<开始的打印呈现,所以不能是#<void>、#<undefined>或一个程序。
quote表很少用于datum的布尔值、数字或字符串本身,因为这些值的打印表可以用作常量。quote表更常用于符号和列表,当没有被引用时,它具有其他含义(标识符、函数调用等)。
表达式:
'datum
是
(quote datum)速
的简写。
这个简写几乎总是用来代替quote。简写甚至应用于datum中,因此它可以生成包含quote的列表。
例如:
> 'apple
'apple
> '"hello"
"hello"
> '(1 2 3)
'(1 2 3)
> (display '(you can 'me))
(you can 'me)