指令集
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