指令集
GuthonScript语言中,指令是以“#”开头,目前系统共有以下9个指令:
| 序号 | 指令 | 说明 |
|---|---|---|
| 1 | #set | 赋值指令 |
| 2 | #if | 条件语句指令 |
| 3 | #elseif | 条件语句指令 |
| 4 | #else | 条件语句指令 |
| 5 | #foreach | 循环语句指令 |
| 6 | #continue | 循环语句指令 |
| 7 | #break | 循环语句指令 |
| 8 | #function | 函数定义指令 |
| 9 | #while | 循环语句指令 |
| 10 | #try | 异常捕捉指令 |
| 11 | #catch | 异常捕捉指令 |
| 12 | #finally | 异常捕捉指令 |
| 13 | #synchronized | 同步执行指令(1.5.0+) |
| 14 | #end | 结束指令 |
赋值指令#set
GuthonScript语言中,赋值指令采用#set来实现,如:
#set($var=1)条件语句指令#if
GuthonScript语言中,条件语句指令由 #if、#elseif、#else组成,且条件语句必须以#end结尾。
#if ($count eq 1 and ($sum eq 0 or $sum eq 1))
// do something...
#elseif ($count eq 2 or $sum eq 1)
// do something...
#else
// do something...
#end条件操作符
为了兼容大家的写作习惯,GuthonScript语言中,条件指令操作符兼容如下指令:
| 序号 | 操作符 | 推荐 | 说明 |
|---|---|---|---|
| 1 | and、&& |
and |
并且 |
| 2 | or、|| |
or |
或者 |
| 3 | eq、== |
eq |
等于 |
| 4 | ne、!= |
ne |
不等 |
| 5 | > |
大于 | |
| 6 | >= |
大于等于 | |
| 7 | < |
小于 | |
| 8 | <= |
小于等于 |
循环语句指令#foreach
GuthonScript语言中,循环语句指令采用#foreach开头,#end结尾。
#foreach ($row in $list)
#if ($row.count eq 1)
#continue // 继续循环
#end
#if ($row.count eq 0)
#break // 退出循环
#end
$vs.log.info($index) // $index为系统内置变量,用于保存当前循环的计数器,从0开始
#end循环语句语法
循环语句采用 #foreach ( 局部变量 in 集合变量 )
#continue
您可以通过#continue来继续当前循环,而不再执行循环内剩余的语句。
#break
您可以通过#break来退出当前循环。
循环计数器 $index
$index 为GuthonScript语言中专门为循环指令而保留的循环计数器变量,在循环体内,可以通过此变量获取当前循环的进度,$index数值从0开始计数。
请注意
$index为系统保留变量,不允许用户代码对其直接赋值。
循环语句指令#while
GuthonScript语言中,另外一个循环指令为#while指令,可以通过条件判断是否终止循环。
#set($count=0)
#while ($count < 5)
#set($count = $count + 1)
#end
#continue、#break两个指令同样适用于#while的循环指令,$index在$while循环指令中无效。
异常捕捉指令#try
GuthonScript语言中,支持异常捕获功能。使用方法如下:
// do something...
#try
// do something...
#catch($e)
$vs.log.info($e.message)
$e.printLog()
#finally
// do something...
#end
同步执行指令#synchronized
GuthonScript语言中,支持线程同步执行功能。使用方法如下:
注意:本指令需要1.5.0及以上版本才会支持
// do something...
#synchronized
// do something...
$vs.log.info('我获得了同步执行权限,开始执行脚本...')
#end
函数定义指令#function
GuthonScript语言中,支持函数的定义、调用以及递归调用,但是不支持函数重载和继承。使用方法如下:
#set($form.count=10)
#set($count=@getCountValue($form)) // 调起函数
$vs.log.info($count) // $count=0
#function getCountValue($form) // 函数定义
#if ($form.count <= 0)
return $form.count
#end
#set($form.count=$vs.util.precise($form.count,1,'-'))
return @getCountValue($form) // 递归调用
#end调起函数
调起函数时采用@[函数名称](参数)的方式调起。
函数变量
函数本身可以赋值到一个变量里去。
注意:本功能需要1.4.2及以上版本才会支持
#set($funs = $vs.util.newMap()) // 创建父级对象
#set($funs.funA = @funA) // <-- 函数不允许赋值给一级对象(函数必须有父级对象)
$funs.funA(1) // 函数调用
#function funA($a)
return $a + 1
#end