找回密码
 注册
关于网站域名变更的通知
查看: 660174|回复: 50
打印 上一主题 下一主题

十天学会Skill之第二天

    [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-27 17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

评分

参与人数 2贡献 +10 收起 理由
y175813652 + 5 支持
wg2005 + 5 谢谢分享

查看全部评分

该用户从未签到

推荐
发表于 2016-11-30 18:22 | 只看该作者
Over了,看不懂E文

该用户从未签到

推荐
发表于 2017-6-8 11:10 | 只看该作者
赞楼主了!可以出本书了~

该用户从未签到

2#
发表于 2010-1-27 18:07 | 只看该作者
写的很明了

该用户从未签到

3#
发表于 2010-1-27 18:45 | 只看该作者
很用心!支持!

该用户从未签到

4#
发表于 2010-1-27 22:47 | 只看该作者
楼主的帖子实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见楼主的这个帖子。实在是我三生之幸啊。看完楼主的这个帖子之后,我竟产生出一种无以名之的悲痛感——啊,这么好的帖子,如果将来我再也看不到了,那我该怎么办?那我该怎么办?直到我毫不犹豫地把楼主的这个帖子收藏了,我内心的那种激动才逐渐平静下来。可是我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。我要拿出这帖子奉献给世人赏阅,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止!

该用户从未签到

5#
发表于 2010-1-27 22:48 | 只看该作者

该用户从未签到

6#
发表于 2010-1-28 15:17 | 只看该作者
感谢楼主分享~

该用户从未签到

7#
发表于 2010-1-29 11:46 | 只看该作者
看的额一头雾水啊

该用户从未签到

8#
发表于 2010-1-29 11:47 | 只看该作者
先慢慢看,学习下
  • TA的每日心情
    开心
    2020-9-8 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    9#
    发表于 2010-1-29 14:39 | 只看该作者
    学习了,感谢LZ

    该用户从未签到

    10#
    发表于 2010-1-29 17:50 | 只看该作者
    学习中,感谢楼主

    该用户从未签到

    11#
    发表于 2010-1-29 19:55 | 只看该作者
    Thanks a lot.

    该用户从未签到

    12#
    发表于 2010-9-21 10:51 | 只看该作者
    很有用!~duoxie分享

    该用户从未签到

    13#
    发表于 2010-9-27 15:52 | 只看该作者
    继续支持LZ

    该用户从未签到

    14#
    发表于 2011-2-15 17:12 | 只看该作者
    第一天是入门,第二天就开始详解了,继续学习

    该用户从未签到

    15#
    发表于 2011-12-26 11:24 | 只看该作者
    赞一个
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-12 18:45 , Processed in 0.109375 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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