Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18173|回复: 11

Skill定义函数

[复制链接]
发表于 2013-12-29 11:34:12 | 显示全部楼层 |阅读模式
定义函数:
Skill 中常用的3个定义函数的关键字是procedure,defun ,lambda。
1. procedure procedure的基本语法,
procedure(s_funcName(l_formalArglist)
g_expr1 ...
) 示例
procedure( trAdd( x y ) ;定义了包含2个参数的函数trAdd printf( "Adding %d and %d ... %d \n" x y x+y ) x+y ;默认的返回值 ) => trAdd trAdd( 6 7 ) => 13 ;函数名trAdd,2个参数6和7
2. defun
defun的基本语法:
defun(s_funcName ( l_formalArglist )
g_expr1 ...
)
示例
defun( factorial (x) if( (x == 0) then 1 else x * factorial( x - 1)))
=> factorial
factorial( 6 )=> 720
需要注意的是用defun定义函数时,函数名跟左括号之间一定要有个空格,否则会出现语法错误,而用procedure定义函数时函数名与括号间不能有空格。
3. lambda lambda的基本语法,
trAddWithMessageFun = lambda( ( x y ) printf( "Adding %d and %d ... %d \n" x y x+y ) x+y ) => funobj:0x1814b90 lambda定义的函数没有函数名,所以将其赋值给一个变量。使用apply调用一个lambda函数,apply( trAddWithMessageFun '( 4 5 ) ) => 9

评分

参与人数 1威望 +2 SKILL币 +2 贡献 +2 收起 理由
vivienluo + 2 + 2 + 2 帖子不错。

查看全部评分

发表于 2013-12-30 00:48:08 | 显示全部楼层
为啥不把define也算进去呢,difine函数也很好用
发表于 2014-12-30 20:05:01 | 显示全部楼层
很好的总结,现在明白了三个函数定义方式了
发表于 2017-2-4 09:28:25 | 显示全部楼层
继续学习中,感谢。
发表于 2017-6-15 10:43:17 | 显示全部楼层
学习中,谢谢
发表于 2017-7-16 08:42:53 | 显示全部楼层
看见有用procedure定义空函数名的函数,是不是会优先执行
发表于 2018-1-26 08:54:45 | 显示全部楼层
study..., thanks
发表于 2019-4-14 17:08:03 | 显示全部楼层
继续学习中···
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-23 20:59 , Processed in 0.131855 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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