请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 808|回复: 0

[转帖] Skill定义函数

[复制链接]

14

主题

0

回帖

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
积分规则
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2023-12-2 16:50 , Processed in 0.039017 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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