PLCC 发表于 2013-12-29 11:34:12

Skill定义函数

定义函数:
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

chuankay 发表于 2013-12-30 00:48:08

为啥不把define也算进去呢,difine函数也很好用

linuxfor 发表于 2014-12-30 20:05:01

很好的总结,现在明白了三个函数定义方式了

cuiergongzhu 发表于 2015-6-1 13:48:37

谢谢分享:):)

zhuhai09 发表于 2017-2-4 09:28:25

继续学习中,感谢。

z838855080 发表于 2017-6-15 10:43:17

学习中,谢谢

hyper 发表于 2017-7-16 08:42:53

看见有用procedure定义空函数名的函数,是不是会优先执行

Kane 发表于 2017-12-19 12:11:46

多谢分享!~

墨客的秋天 发表于 2018-1-26 08:54:45

study..., thanks

UtopiaSnail 发表于 2019-4-14 17:08:03

继续学习中···
页: [1] 2
查看完整版本: Skill定义函数