3. Skill 语言简介
Skill 语言的很多地方和 C 语言差不多,如变量,函数,控制结构,输入输出等,详细
的介绍可以参考 User Guide,这里只作简单介绍。
3.1. Skill 的变量不需要事先声明,Skill 第一次用到是会自动生成变量。变量可以由字
符、数字、“_” 和 “?” 组成,注意第一个字符不能是数字和”?”。由于 Cadence 所开发的
Skill 中的变量、函数都是第一个字母小写,以_为开头的是 Cadence 的专用函数,为了避
免冲突,建议大家函数和变量命名都以大写字母开头。
3.2. Skill 的函数的调用方式有三种,
strcat( "Hello" "," " everyone" "!" ) ;常见的类C格式
( strcat "Hello" "," " everyone" "!" ) ;类Lisp语言的格式
strcat "Hello" "," " everyone" "!" ;上面的括号可以省略
返回的结果都是 => "Hello, everyone!"
推荐使用第一种方式,需要注意的是函数和第一个括号之间没有空格,否则会报错
如:
strcat ( "Hello" "," " everyone" "!" )
=> *Error* eval: not a function - "Hello"
这是调用 skill 函数的一个常见问题,其它的问题还有:
a. 软件没响应,比如在 CIW 中输入段代码,软件没有反映,什么结果也没有,一般
是因为( )或者” “不成对造成的,一般可以通过键入 ] 来解决,它表示补充完不对称的括号
(可以代替任意多个右括号),如果还没有响应,键入 “] 这时大部分情况下,系统会有响应
b. 数据类型不匹配,如:
strcat( "Mary had a" 5 )
=>*Error* strcat: argument #2 should be either a string
or a symbol (type template = "S") – 5
3.3. Skill List 是 Skill 基于 Lisp(List Processing)语言的表现,它是 skill 数据对象的
一个有序集合,skill 数据甚至程序本身都可以看作是一个 list,这是 C 语言中所没有的概
念。下面是 skill list 的简单例子
List Explanation
(1 2 3) A list containing the integer constants 1, 2, and 3
(1) A list containing the single element 1
( ) An empty list (same as the special atom nil)
(1 (2 3) 4) A list containing another list as its second element
A). 创建 list 有以下几种基本的方法:
Specify all the elements of the list literally with the single quote ( ‘ ) operator.
Specify all the elements as evaluated arguments to the list function.
Add an element to an existing list with the cons function.
Merge two lists with the append function.
1).用 ' 和 list 定义一个list,注意两者的差别
a = 1 => 1
b = 2 => 2
'( a b 3 ) => ( a b 3 )
list( a b 3 ) => ( 1 2 3 )