脚本进阶
Roy Kid
# 脚本进阶
# 循环
next variable
variable :一个或多个变量
1
2
2
如果一个变量是个多值变量的话,其后调用next就可以按次序调用其下一个值。即便读取不同的脚本,变量的值仍被保留。例如index,loop等。如果这个变量的值用尽,则会传递给jump命令一个标记以跳过下一个jump,同时这个变量会被删除 。利用这个特性,我们可以去构建脚本中的循环结构。
jump file [label]
file : 要跳转到的文件。SELF指代本文件
label : 将要跳转到的位置
1
2
3
2
3
通过这个命令,可以跳到目标文件所标记的位置,以实现循环的效果。
label ID
ID : 字符串,以充当标志
1
2
2
在脚本中指定一个点,使jump可以直接跳至这个位置,同时前面的命令都将被忽略。
有了这些工具之后我们就可以写循环了。
单循环:
variable i loop 3 #声明变量
print "$i" #命令块
next i #i自增
jump SELF #重新读取本脚本
1
2
3
4
2
3
4
嵌套循环:
label lp
variable i loop 3
variable j loop 5
print "($i,$j)"
next j
jump SELF lp
next i
jump SELF lp
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
通过这些命令的组合,就能构建出不同类型的循环。
# 分支
if boolean then t1 t2 ... elif boolean f1 f2 ... elif boolean f1 f2 ... else e1 e2
boolean : 布尔表达式
then : 关键词
t1 t2 : 被执行的命令块
elif : 关键词
else : 关键词
f1 f2 : 被执行的命令块
1
2
3
4
5
6
7
2
3
4
5
6
7
和各种编程语言一样,提供了if-elif-else风格的判断语句。结合循环我们有:
label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if "$b > 2" then "jump SELF break"
next b
jump in.script loopb
label break
variable b delete
next a
jump SELF loopa
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13