......就像打包一样。
我使用Emacs(也许,它可以提供某种解决方案)。
例如(defun the-very-very-long-but-good-name () ...)
稍后在代码中没用。但是像Fn-15
或第一个字母缩写这样的名称也没用。
是否可以在尝试调用函数名称时为包提供别名或访问文档字符串?
换句话说,功能是否有可能以某种方式混合自我记录和短名称?
答案 0 :(得分:32)
你想要defalias
。 (defalias 'newname 'oldname)
将保留文档,甚至在请求其文档时显示“newname是`oldname'的别名。”
答案 1 :(得分:4)
如果所有打字都使得长名称不断使用,那么是的,emacs可以提供帮助。查看abbrev-mode
。在这方面也考虑到了hippie-expand
。
如果这是一个可读性问题,那就更难了。
答案 2 :(得分:4)
?这是代码:
(defmacro alias (new-name prev-name)
`(defmacro ,new-name (&rest args)
`(,',prev-name ,@args)))
; use: (alias df defun)
(defun group (source n)
(if (zerop n) (error "zero length"))
(labels ((rec (source acc)
(let ((rest (nthcdr n source)))
(if (consp rest)
(rec rest (cons (subseq source 0 n) acc))
(nreverse (cons source acc))))))
(if source (rec source nil) nil)))
(defmacro aliasx (&rest names)
`(alias
,@(mapcar #'(lambda (pair)
`(alias ,@pair))
(group names 2))))
; use: (aliasx df1 defun
; df2 defun
; df3 defun)
答案 3 :(得分:4)
您可以使用setf
将函数分配给另一个函数单元格,例如:
(defmacro alias (new-name prev-name)
`(setf (symbol-function ,new-name) (symbol-function ,prev-name)))
答案 4 :(得分:0)
如果你的问题是你记不起一个很长的函数名,但你记得名字的一部分,那就是“apropos”的用途。在我的Emacs中,我有“C-h a”绑定到“超级apropos”。您输入要查找的符号的子字符串,并列出所有匹配项。
答案 5 :(得分:0)
我不知道Emacs,但不会(定义短名称longnamefunctionblahblah)工作?
答案 6 :(得分:-1)
你可以简单地拥有一个只调用另一个函数的函数。
答案 7 :(得分:-1)
您可以使用(defmacro ...)
为函数设置别名