gpt4 book ai didi

emacs - 如何在 emacs lisp 中计算 "&optional argument"?

转载 作者:行者123 更新时间:2023-12-02 21:16:35 24 4
gpt4 key购买 nike

我不明白如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com