作为选择性参数的关键字 (Keywords as Optional Parameters)

若函数同时接受关键字与选择性参数,这通常是个错误,无心地提供了关键字作为选择性参数。举例来说,函数 read-from-string 有着下列的参数列表:

  1. (read-from-string string &optional eof-error eof-value
  2. &key start end preserve-whitespace)

这样一个函数你需要依序提供值,给所有的选择性参数,再来才是关键字参数。如果你忘记了选择性参数,看看下面这个例子,

  1. > (read-from-string "abcd" :start 2)
  2. ABCD
  3. 4

:start2 会成为前两个选择性参数的值。若我们想要 read 从第二个字符开始读取,我们应该这么说:

  1. > (read-from-string "abcd" nil nil :start 2)
  2. CD
  3. 4