函数参数化
前面我们定义了一个函数用来返回到前一个窗口
现在让我们来做一个改进,希望这个函数能接收一个参数,返回到前面第N个窗口
(defun other-window-previous()
"select the privious window"
(interactive)
(other-window -1)
)
interactive这个函数表示other-window-previous可以用M-x XXX或者快捷键来调用
====>
(defun other-window-previous(n)
"select the Nth privious window"
(interactive "p")
(other-window (- n))
)
这里,函数other-window-previous接收前缀参数n(C-u N来传递的)
并且interactive也接收一个字符串类型的参数 "p",表示这个other-window-previous函数是一个
有参数的函数,如果没有传递给它参数,那么默认就是1
所以如果我们
C-u 4 C-x C-p那么就是返回前4个窗口
C-x C-p就是前一个窗口
很简单吧?呵呵
interactive的参数相关,请参阅 C-h f RET interactive
二 可选参数
我们进一步加以改进,使其参数能够可选输入或不输入
(
defun other-window-previous(&optional n)
"select the Nth privious window"
(interactive "p")
(if n
( ;if n not-nil
other-window (- n)
)
( ;if n is nil
other-window -1
)
)
)
或者以下部分可以简化为
(if n
( ;if n not-nil
other-window (- n)
)
( ;if n is nil
other-window -1
)
)
================》
(other-window (if n (- n) -1))
================》
(other-window (- (if n n 1)))
(if n n 1) ====> (or n 1)
推荐后面一种写法,只比较一次
最终写法如下:
(defun other-window-previous(&optional n)
"select the Nth privious window"
(interactive "p")
(other-window (- (or n 1))))
但在Emacs里的写法大都会如下
(defun other-window-previous(&optional n)
"select the Nth privious window"
(interactive "P")
(other-window (- (prefix-numeric-value n))))
这里interactive的参数是"P",表示传递给other-window-previous的参数按照Raw保持数据类型
而prefix-numeric-value表示能够将传递进来的Raw正确地"解析"或"还原"成数字类型的参数
就像是给interactive传递了一个"p"参数一样
我们写后面一种写法,是为了更加符合Emacs Lisp的写法,并且重用了已有的preifx-numric-value
的函数,便于重用
今天也到此为止啦,累,睡觉啦
记录学习
我的简介
博客归档
-
▼
2008
(69)
-
▼
七月
(29)
- 真的很累啊,要疯了
- 今後の生活はどうなるでしょか
- 测试国内
- Writing GNU Emacs Extension Note Day 3
- Writeing GNU Emacs Note Day 2
- 绑定快捷键的时候,注意不要有空格
- Writing GNU Emacs Extensions Note
- 葛西临海公园游泳
- Fw: [天天俯卧撑] 测试用户名
- 测试用户名
- 买了个挂在脖子上的治疗肩膀疼的东西,但是肩膀越来越疼了,骗子!
- さようならbengの皆さん
- 写了一天的道别邮件
- 今天是在日工作的最后一天了
- 電車の中でつまらない
- Mew 常用设置 记录
- Mew的字符集很奇怪,自动识别有问题
- WinXP日文系统,Emacs23,Mew6.1安装配置记录
- Mew的地址簿的格式
- 睡觉了,好累啊,终于算半搞定了呵呵
- Emacs23写博客超简单的方法:)
- 中文WinXP,Emacs23,MEW6.1,配置终于告一段落,有点心得
- こんにちは、お早うございます
- macs 快速指南(查看版权声明请至本文末尾)
- 和阿里大丰收的
- My life with EmacsEmacs,它真的很酷,不过刚开始配置,真“苦”容我发几句牢骚吧...
- 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当...
- 当你困了的时候,你在想什么? 每天我都有一个低潮期,直接反映就是特别特别的累和困,想睡觉,在这...
- dired 是 Emacs 自带的文件管理器,操作非常方便,再加上一些扩展之后无疑是 一个理想的文件...
-
▼
七月
(29)
没有评论:
发表评论