请选择 进入手机版 | 继续访问电脑版
搜索
专业IC版图外包服务 微信:drclvs
广告位:SY02 广告业务联系QQ:3173974412
无锡芯满微电子有限公司---专业研发电机驱动芯片
IC设计论坛----ictown.com
广告位:SY05 广告业务联系QQ:3173974412
查看: 514|回复: 0

[转帖] Skill定义函数

[复制链接]

14

主题

14

帖子

161

E币

技术员

Rank: 2

积分
28
发表于 2017-5-8 10:42:31 | 显示全部楼层 |阅读模式
定义函数:
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
积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



版权所有:EDABOSS论坛 投诉受理:13816911948 合作热线:13816911948

备案信息:苏经营性ICP B2-20090218号 皖ICP备09697823号 电子公告服务许可文件号:皖通[2009]556号

Powered by EDABOSS X3.4 Tamplate By EDABOSS论坛  © 2001-2013 Comsenz Inc.

广告投放 微信:drclvs

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