【发布时间】:2010-02-15 03:56:20
【问题描述】:
我有一个函数,我在其中传递一个文件名,后跟几个整数参数。问题是我现在想将我的代码作为 Unix 脚本运行,使用 command-line-args-left 从命令行传递参数。当 #1 调用 process-args 时,会创建一个包含所有值的列表。在 #2 中,列表的列表{例如。 ((1 2 3)) } 在进入 process-args 时创建。保持代码通用性以便我可以在同一个函数中处理 #1 和 #2 这两种情况的最佳方法是什么?
(defun process-args (filename &rest cols) ...) (过程参数文件名 1 2 3); #1 (process-args (car command-line-args-left) (cdr command-line-args-left)); #2这是我正在测试的一些工作示例代码:
#!/usr/bin/emacs --script (defun process-args (filename &rest cols) (princ (concat "脚本名称: " file "\n")) (princ (concat "文件参数:" 文件名 "\n")) (princ“其他参数值:”) (校长) (princ "\n是列表:") (princ (listp cols)) (princ "\n----------\n") (虽然列 (princ (car cols)) (原则“...”) (setq cols (cdr cols))) (princ "\n")) (打印“===== 版本 #1:基本情况 - 变为 (1 2 3) =====”) (process-args (car command-line-args-left) 1 2 3) (打印“=====版本#2:将列表的cdr作为一个字符串传递=====”) (process-args (car command-line-args-left) (mapconcat 'identity (cdr command-line-args-left) "")); (打印“=====版本#3:列表列表测试 - 变为((1 2 3))=====”) (process-args (car command-line-args-left) '(1 2 3))【问题讨论】:
标签: elisp