第5课:Skill函数定义及参数传递
如果你觉得本教程对你有帮助,欢迎大家转载到各大论坛博客。转载还请注明出处哦{:soso_e113:}。老罗感谢大家一直以来的支持!{:soso_e100:}上节课只是简单的讲解了函数的概念,不知道大家对函数理解得怎么样了。如果学习过程中有什么问题,各位同学可以直接发帖互相讨论,以便其他人遇到相同的问题可以参考解决。我一个人的时间有限,不能对每个人遇到的问题都一一解答,还忘理解。所以大家遇到问题还是多多发表求助。
1.函数的定义方法
上节课学习了函数的概念,相信大家对函数都有了基本的理解。之前几节课程里面使用了defun来定义一个函数。在Skill中,还可以使用procedure来定义函数。
大家可能都注意到了,使用defun定义的话,在函数名后面必须要有一个空格,而使用procedure定义的话,则不能有空格,这是两种方式定义的区别。
例如使用defun定义一个函数MyFunc:
defun( MyFunc ()
nil
);end defun
等同于使用procedure定义,注意procedure函数名后面没有空格。
procedure( MyFunc()
nil
);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.函数的结构
**** Hidden Message *****
如果你觉得本教程对你有帮助,欢迎大家转载到各大论坛博客。转载还请注明出处哦{:soso_e113:}。老罗感谢大家一直以来的支持!{:soso_e100:}
提交作业,谢谢罗老师~~
{:soso_e198:}作业。问题:axlUIConfirm这个命令是不是没有办法带参数?
本帖最后由 jelly_770 于 2015-2-3 14:55 编辑
落下好多课程,补课来了
本帖最后由 linuxfor 于 2014-12-31 11:49 编辑
又要开始新的学习了,好兴奋!!!
下面是我遇到的问题:见第二张图
这是因为在这个代码中,见第一张图缺少了小括号的缘故,只要将上去的话就会加载成功,正常测试功能了见第三张图
第四张是作业完成代码,及测试结果显示。。。
第五张是测试方式
老师,貌似反了。 自己试了下,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" PLCC 发表于 2014-12-30 01:54
老师,貌似反了。 自己试了下,defun没有空格成功加载。有空格报错
E- *Error* defun: too few...
不会哦,把你代码贴上看看。 学习,学习~~~~~~ vivienluo 发表于 2014-12-30 07:45
不会哦,把你代码贴上看看。
抱歉,是我弄错了。。。。 来学习了,感谢罗老师
来上课咯~不过作业估计得元旦回来交了。。得到公司搞 继续学习。。。。。 感谢罗老师,但是看不了帖子,刚才还可以的 谢谢罗老师,学习了。