博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
defadvice中的?argv是什么
阅读量:5025 次
发布时间:2019-06-12

本文共 923 字,大约阅读时间需要 3 分钟。

      《Jess In Action》58页,这样说?argv:In the body of a defadvice call, the variable ?argv is special: It points to the actual function call being executed。

并给出例子如下:

1 Jess> (bind ?grocery-list (create$ peas beans butter milk)) 2 (peas beans butter milk) 3 Jess> (nth$ 1 ?grocery-list) 4 peas 5 Jess> (defadvice before nth$ 6 ;; Strip off the function name 7 (bind ?tail (rest$ ?argv)) 8 ;; Convert zero-based to one-based index 9 (bind ?index (+ 1 (nth$ 1 ?tail)))10 ;; Put the argument list back together.11 (bind ?argv (create$ nth$ ?index (rest$ ?tail))))12 TRUE13 Jess> (nth$ 1 ?grocery-list)14 beans

 

      从11和13行可以看出,(rest$ ?tail)对应?grocery-list,故?tail对应(1 ?grocery-list),所以9行的(nth$ 1 ?tail)就是1,加1以后变成了2。从7行得知,?tail(rest$ ?argv)得来的,那么?argv就应该是(nth$ 1 grocery-list),这个是调用函数本身。

   所以得出结论,文首的话翻译后是:所谓的?argv,是指向实际正执行的函数本身,这个本身是指其表述本身,既不是其执行的结果,也不是其执行的参数,而是组成它的字符串。嗯,应该有个更好的表述,回头想起来了再来修改。

转载于:https://www.cnblogs.com/solarup/p/5658131.html

你可能感兴趣的文章
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>
完整ASP.Net Excel导入
查看>>
判断CPU大小端示例代码
查看>>
ARTS打卡第13周
查看>>
循环队列的运用---求K阶斐波那契序列
查看>>
pta 编程题14 Huffman Codes
查看>>
初始化bootstrap treeview树节点
查看>>