bronte

这篇笔记,说明elisp相关的列表操作函数

(注,CAR是Contents of the Address part of the Register,表示列表的头一个元素;CDR是Contents of the Decrement part of the Register)

这种命名属于历史遗留问题.

 

*(cons  CAR CDR)

---将返回一个新的列表(CAR CDR),CAR表示列表的头一个部分,CDR表示列表除CAR的其余部分,后面还有"car,cdr"函数的意思也是这个.

说明,1)CDR至少是个空列表.2)不改变CDR

---示例

(cons 1 \'(2 3)) => (1 2 3)

 

*(car LIST)

---返回列表的头元素,可能是一个列表,原子或nil.不改变原LIST.

---示例

(car \'(a b c)) => a

 

*(cdr LIST)

---返回除头元素以外的剩余列表.不改变原LIST

---示例

(cdr \'((1 2) 3)) => (3)

 

*(nthcdr N LIST)

---对LIST执行N次cdr操作后,返回的剩余列表.不改变原LIST

---示例

(nthcdr 2 \'(1 (2 3) 4)) => (4)

 

*(setcar LIST newCAR)

---将LIST的CAR设置为newCAR,执行返回newCAR.

改变原LIST

---示例

(setq list \'(1 2 3)) => (1 2 3)

(setcar list \'a) => a

list => (a 2 3)

 

*(setcdr LIST newCDR)

---将LIST的CDR部分设为newCDR,执行返回newCDR.

改变原LIST

---示例

(setq list \'(1 2 3)) => (1 2 3)

(setcdr list (a b)) => (a b)

list => (1 a b)

(setcdr list ()) => nil

list => (1)

(setcdr list ()) => nil

list => (1)  ;;可见,setcdr对列表第一項无效,即使只有一项时

 

*(length LIST/STRING)

---返回列表元素个数或者字符串的字符数

---示例

(length \'(1 2 3)) => 3

(length "海上升明月") => 5

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-07-15
  • 2018-01-13
  • 2022-02-05
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
猜你喜欢
  • 2022-12-23
  • 2021-10-14
  • 2022-12-23
  • 2021-06-05
  • 2022-12-23
  • 2021-07-04
  • 2022-12-23
相关资源
相似解决方案