指令集

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

$indexGuthonScript语言中专门为循环指令而保留的循环计数器变量,在循环体内,可以通过此变量获取当前循环的进度,$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


文档更新时间: 2024-12-26 09:35   作者:weir