Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 322606|回复: 582

[初级篇] 第5课:Skill函数定义及参数传递

  [复制链接]
发表于 2014-12-30 00:17:50 | 显示全部楼层 |阅读模式
如果你觉得本教程对你有帮助,欢迎大家转载到各大论坛博客。转载还请注明出处哦{:soso_e113:}。老罗感谢大家一直以来的支持!{:soso_e100:}

上节课只是简单的讲解了函数的概念,不知道大家对函数理解得怎么样了。如果学习过程中有什么问题,各位同学可以直接发帖互相讨论,以便其他人遇到相同的问题可以参考解决。我一个人的时间有限,不能对每个人遇到的问题都一一解答,还忘理解。所以大家遇到问题还是多多发表求助。
1.函数的定义方法
上节课学习了函数的概念,相信大家对函数都有了基本的理解。之前几节课程里面使用了defun来定义一个函数。在Skill中,还可以使用procedure来定义函数。
大家可能都注意到了,使用defun定义的话,在函数名后面必须要有一个空格,而使用procedure定义的话,则不能有空格,这是两种方式定义的区别。
例如使用defun定义一个函数MyFunc:


  1. defun( MyFunc ()
  2.         nil
  3. );end defun
复制代码


等同于使用procedure定义,注意procedure函数名后面没有空格。


  1. procedure( MyFunc()
  2.         nil
  3. );end procedure
复制代码


假如defun定义的函数名后没有跟空格的话,allegro会提以下的报错:

E- *Error* defun: too few arguments (at least 3 expected, 2 given) - (MyFunc nil)
E- *Error* load: error while loading file - "F:/MySkill/funcDef.il" at line 3


假如使用procedure定义的函数名后跟了空格的话,allegro也会提示相应的报错
E- *Error* procedure: illegal formal list - MyFunc
E- *Error* load: error while loading file - "F:/MySkill/funcDef.il" at line 2


各位同学可以将以上的代码写到一个il文件,分别测试下两者函数定义的区别,然后使用Skill Debuger调试工具加载,看是否加载成功。

注:大家以后可根据自己习惯选择defun或者procedure定义,两者唯一的区别就是函数名后面是否跟空格。

2.函数的结构
游客,如果您要查看本帖隐藏内容请回复


如果你觉得本教程对你有帮助,欢迎大家转载到各大论坛博客。转载还请注明出处哦{:soso_e113:}。老罗感谢大家一直以来的支持!{:soso_e100:}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-3-10 20:16:44 | 显示全部楼层
提交作业,谢谢罗老师~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-1-20 17:00:15 | 显示全部楼层
{:soso_e198:}作业。问题:axlUIConfirm这个命令是不是没有办法带参数?




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2014-12-31 00:05:02 | 显示全部楼层
本帖最后由 linuxfor 于 2014-12-31 11:49 编辑

又要开始新的学习了,好兴奋!!!
下面是我遇到的问题:见第二张图
这是因为在这个代码中,见第一张图缺少了小括号的缘故,只要将上去的话就会加载成功,正常测试功能了见第三张图
第四张是作业完成代码,及测试结果显示。。。
第五张是测试方式



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-2-3 08:35:59 | 显示全部楼层
本帖最后由 jelly_770 于 2015-2-3 14:55 编辑

落下好多课程,补课来了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2014-12-30 01:54:52 | 显示全部楼层
老师,貌似反了。   自己试了下,defun没有空格成功加载。有空格报错        
E- *Error* defun: too few arguments (at least 3 expected, 1 given) - ((MyFunc nil nil))
E- *Error* load: error while loading file - "E:/tisheng/myskill/test.IL"
 楼主| 发表于 2014-12-30 07:45:09 | 显示全部楼层
PLCC 发表于 2014-12-30 01:54
老师,貌似反了。   自己试了下,defun没有空格成功加载。有空格报错        
E- *Error* defun: too few  ...

不会哦,把你代码贴上看看。
发表于 2014-12-30 14:52:07 | 显示全部楼层
vivienluo 发表于 2014-12-30 07:45
不会哦,把你代码贴上看看。

抱歉,是我弄错了。。。。
发表于 2014-12-30 20:55:15 | 显示全部楼层
来学习了,感谢罗老师
发表于 2014-12-30 22:03:25 | 显示全部楼层
来上课咯~不过作业估计得元旦回来交了。。得到公司搞
发表于 2014-12-30 22:44:23 | 显示全部楼层
感谢罗老师,但是看不了帖子,刚才还可以的
发表于 2014-12-30 23:16:52 | 显示全部楼层
谢谢罗老师,学习了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-12-26 01:25 , Processed in 0.220919 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表