8.6 Review

这里是一些最近引入的函数的简要概述。

car
cdr

car 返回列表的第一个元素;cdr 返回列表的第二个及后续元素。

例如:

(car '(1 2 3 4 5 6 7))
     ⇒ 1
(cdr '(1 2 3 4 5 6 7))
     ⇒ (2 3 4 5 6 7)
cons

cons通过将其第一个参数添加到其第二个参数前构造一个列表。

例如:

(cons 1 '(2 3 4))
     ⇒ (1 2 3 4)
funcall

funcall 将其第一个参数作为函数求值,并将其余参数传递给其第一个参数。

nthcdr

返回在列表上对 CDR 进行 n 次操作的结果。 可以看作是“剩下的剩下”。

例如:

(nthcdr 3 '(1 2 3 4 5 6 7))
     ⇒ (4 5 6 7)
setcar
setcdr

setcar 改变列表的第一个元素;setcdr 改变列表的第二个及后续元素。

例如:

(setq triple (list 1 2 3))

(setcar triple '37)

triple
     ⇒ (37 2 3)

(setcdr triple '("foo" "bar"))

triple
     ⇒ (37 "foo" "bar")
progn

按顺序评估每个参数,然后返回最后一个的值。

例如:

(progn 1 2 3 4)
     ⇒ 4
save-restriction

记录当前缓冲区中生效的任何缩小范围,并在评估参数后恢复该缩小。

search-forward

搜索字符串,如果找到,移动点。使用正则表达式时,请使用类似的 re-search-forward。(See 正则表达式搜索, 了解正则表达式模式和搜索的解释。)

search-forwardre-search-forward 需要四个参数:

  1. 要搜索的字符串或正则表达式。
  2. 可选地,搜索的限制。
  3. 可选地,如果搜索失败,返回 nil 或错误消息。
  4. 可选地,重复搜索的次数;如果为负数,则向后搜索。
kill-region
delete-and-extract-region
copy-region-as-kill

kill-region 剪切点和标记之间的文本,并将该文本存储在kill ring中,因此您可以通过粘贴将其取回。

copy-region-as-kill 将点和标记之间的文本复制到kill ring中,可以通过粘贴获取。该函数不会从缓冲区中删除文本。

delete-and-extract-region 从缓冲区中移除点和标记之间的文本并将其丢弃。您无法再获取它。 (这不是一个交互式命令。)