|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 deargds 于 2010-1-27 17:58 编辑
十天学会Skill之第二天
By deargds
https://www.eda365.com
学习目的:了解SKILL的一些基础,变量,函数,以及流程控制。
一,我们先了解以下几种数据类型,
整数:integer例如:2, 8, 6
浮点数:float例如:2.3, 9.3265, 0.5, .8,
字符串:string例如:“Hello!”
原子类型:atom例如:t , nil , unbound
链表:list例如:list(1,2,3) '(1,2,3)
给变量赋值,除了使用=之外,还可以使用set函数.
set(a,"hello")
数据类型可使用type函数来查询
例如:a = 1
那么type(a)的返回值为fixnum
a = "string"
type(a)返回值为string
另外链表类型非常有用,在skill中有一系列的函数是针对链表操作的,示例如下:
a = list(5,6,7);定义链表a,内容为5 6 7.
如果想得到链表中第一个值,使用car函数即可,car(a)的结果为5
另外还有append1,cons,remove,reverse,nth等许多函数,大家自己先看HELP吧。
X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdf
其它数据类型如symbol,defstruct,array等请参考
X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdf
二,函数的定义
1.通常使用defun或者procedure来自定义一个函数,两者的作用是一样的,区别只在乎在书写格式的差别
defun(test ()
;you can do something
)
procedure(test()
;you can do something
)
上面两句同样是定义了一个test函数,defun定义时在函数名后要有一个空格。
2.局部变量的定义,使用let或prog函数,如果不需要在函数内使用跳转函数或者返回值的话使用let即可。
defun(test ()
let((a)
;you can do something
)
)
上面示例中使用let定义了a为局部变量,其它函数无法访问。
3.函数的参数类型@rest @optional @key
@rest不确定数目的参数,可以有多个参数。
defun( test ( @rest a )
println(a)
)
@optional可选择的参数,在调用该函数时,可以忽略此参数。
defun(test (@optional a )
println(a)
)
@key指定参数的固定值。
defun(test (a b @key (c 3))
println(c)
)
ps:@optional 与 @key 不能同时出现在函数参数定义中。
三,流程控制
1.条件判断if when cond unless,
双向判断
if( 3 > 1 then
println("You know too much!")
else
println("hehe")
)
when( 3 > 1
println("You know too much!")
)
unless( 3 < 1
println("You know too much!")
)
;多向判断
cond(
(2 > 0 ,println(2))
(3 < 0 ,println(3))
)
2.循环语句while for foreach
;while示例
i = 0;定义i的初值为0
while((i <= 10)
i = i + 1;自加一次
println(i)
)
;for示例
sum = 0;定义sun的初值为0
for( i 1 10
sum = sum + i;自加一次
println(sun)
)
;foreach语句,方便用来循环链表类型
foreach( x '(1 2 3 4)
println(x)
)
3.选择语句case caseq
i = 5 + 6
case( i
(5 println("no"))
(11 println("yes"))
(t 'Other)
)
上面简单介绍需要了解的基本知识,另外想学好SKILL,帮助文件是一定要看的,这个教程只是帮大家入门,不可能过多地去重复教程上已经有的内容。
X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdf
X:\Cadence\SPB_15.7\doc\sklangref\sklangref.pdf
|
评分
-
查看全部评分
|