Есть ли простой способ определить функцию, которая повторяется при передаче аргумента?
Например, я определил следующую функцию
(defun swap-sign ()
(interactive)
(search-forward-regexp "[+-]")
(if (equal (match-string 0) "-")
(replace-match "+")
(replace-match "-"))
)
Мне бы хотелось C-u swap-sign
, чтобы позвонить swap-sign
четыре раза.
Я пытался
(defun swap-sign (&optional num)
(interactive)
(let ((counter 0)
(num (if num (string-to-number num) 0)))
(while (<= counter num)
(search-forward-regexp "[+-]")
(if (equal (match-string 0) "-")
(replace-match "+")
(replace-match "-"))
(setq counter (1+ counter)))))
, но C-u swap-sign
все еще запускает только знак свопинга (или, точнее, телопетля) один раз.Я предполагаю, что это потому, что if num
не правильный способ проверить, является ли num
пустой строкой.
Я на правильном пути или есть лучший / более простой способ расширения swap-sign
?