作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白如何在 emacs lisp 中计算“&可选参数”。
我的代码是:
(defun test-values (a &optional b)
"Function with an optional argument (default value: 56) that issues a
message indicating whether the argument, expected to be a
number, is greater than, equal to, or less than the value of
fill-column."
(interactive "p")
(if (or (> a b)(equal a b))
(setq value a)
(setq value fill-column)
(message "The value of payina is %d" fill-column))
**(if (equal b nil)
(setq value 56)))**
在第一部分中,如果我评估 (test-values 5 4)
或 (test-values 5 5)
,一切都是完美的。
但是,当我评估 (test-values 5 ())
或 (test-values 5 nil)
时,出现以下错误:
**Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
>(5 nil)
(or (> a b) (equal a b))
(if (or (> a b) (equal a b)) (setq value a) (setq value fill-column)
(message "The value of payina is %d" fill-column))
test-values(5 nil)
eval((test-values 5 nil) nil)
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)**
请问有人可以帮我吗?谢谢。
最佳答案
未提供的可选参数将绑定(bind)到nil
。在函数体内,您可以在进行算术运算之前显式测试 nil
。在您的流程中,您可以将 b
设置为 56
,如下所示:
(or b (setq b 56))
关于emacs - 如何在 emacs lisp 中计算 "&optional argument"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270174/
我是一名优秀的程序员,十分优秀!