greaterpn1>n2>
leqpn1<=n2<=
geqpn1>=n2>=
equalg1==g2==
nequalg1!
=g2!
=
bandx1&x2&
bnandx1~&x2~&
bxorx1^x2^
bxnorx1~^x2~^
borx1|x2|
bnorx1~|x2~|
andx1&&x2&&
orx1||x2||
rangeg1:
g2:
setqs=expr=
对于既有函数名又有操作符函数,采用函数名调用和采用操作符调用的效果是一样的。
示例lessp(31)=>nil等同于3<1=>nil
预定义算术函数
语法结果
通用函数
add1(n)n+1
sub1(n)n–1
abs(n)绝对值
exp(n)自然对数的n次方
log(n)
max(n1n2...)
min(n1n2...)
mod(x1x2)取模运算
round(n)
sqrt(n)
sxtd(xw)将x右扩展W个符号位
zxtd(xw)和上面的功能相同,速度更快
三角函数
sin(n),cos(n),tan(n)
asin(n),acos(n),atan(n)
随机数生成函数
random(x)产生0~x-1的随机数
srandom(x)初始化随机数生成函数的x
位操作
含义操作符
位与&
位或|
位异或^
左移位>>
右移位<<
取反~
真值、假值
§真值,除了nil以为的值都是真值。
§假值,nil
条件控制函数
if,when,unless,cond
§if
if函数的语法结构
if(condition1then;当condition1为真值时执行代码块expA
expA
else
if(condition2then;当condition2为真值时执行代码块expB
expB
else
…
expC
)
);endif
§when
when函数语法结构
when(condition;当condition为真值时执行代码块expA,否则跳过
expA
);endwhen
§unless
unless语法结构
unless(condition;当condition为假值时执行代码块expA,否则跳过
expA
);endunless
§cond
cond语法结构
cond(
(condition1expA...);当condition1为真值时执行代码块expA
(condition2expB...);…
(condition3expC...);…
(texpN);之前的条件都不满足时默认执行expN
);endcond
[注]:
";"表示注释
循环控制函数
while,for,foreach
§while
while语法结构
while(conditionistrue;当condition为真值时反复执行代码块expA,否则结束循环
expA
)
§for
for语法结构
for(i15
println(i)
)
将输出
1
2
3
4
5
§foreach
foreach是简化版的for,上面的例子用foreach写如下
alist=‘(12345)
foreach(itemalist
println(item)
)
foreach通常用于操作列表,因为它会遍历列表的每一个元素。
选择函数
§caseq的用法类似cond,功能也类似。
caseq(var
(condition1expA)
(condition2expB)
…
);case语法结构
循环结构中的局部变量
使用关键字prog可以在循环结构中定义局部变量。
关于prog的详细介绍请参考函数章节。
返回函数
表示返回值的关键字是return。
return可以强制一个prog结构立即结束,送出返回值,忽略剩余的循环操作。
示例prog(()
for(i010
when(oddp(i)
return(i)
);when
);for
);prog
这个for循环不会运行10次,首次oddp(i)为真值的时候循环就会结束。
正则表达式
在很多的skill应用中都会用到正则表达式,比如在一个字符串数组中查找带有关键字user的字符串。
示例:
lStr='("hello""whenuser""usercome""ffuser""ppuserd""uster");
lRes=nil
foreach(itemlStr
if(rexMatchp("user"item)then
lRes=cons(itemlRes)
println(item)
)
)
输出:
"whenuser""usercome""ppuserd"
lRes=>("ppuserd""usercome""whenuser").
这里的关键命令是rexMatchp,函数形式为rexMatchp(t_patternS_target),这个命令将在第二个参数中查找满足第一个参数(模式)的条件,如果找到返回真值,否则返回假值。
§正则表达式(pattern)的组成字符
语法含义
c匹配任意非特殊字符
.匹配任意字符
\用在特殊字符前面代表特殊字符本身,用在<,>,(,),and1,...,9,的含义在下面描述
[c...]一对方括号中包含一些字符将匹配括号中的任意一个字符,如果第一个字符是^则表示不匹配括号中的所有字符,[a-z]表示匹配a到z之间的任一字符,"-”表示范围。
*用在一个以上描述的字符或pattern后表示匹配该字符或pattern0次或多次。
+类似*,区别在于匹配至少一次
\(..\)如果包含在这个符号中的字符串匹配上了,被匹配的字符可以被提取出来(最多支持9中匹配)
\n和上一个符号对应,反斜杠后跟一个数字将可以提前到上一个符合保留的字符串
\<...\>这个符号表示完全匹配一个字符串的开始和结尾
rs2个正则表达式的组合将尽可能多的匹配