关键字说明

Func...Return...EndFunc

用于自定义用户函数,函数既可带参数也可不带参数,既可以有返回值也可以没有。

Func 函数名 ( [ByRef] $参数1, ..., [ByRef] $参数N, $可选参数1 = 默认值, ...)
    ...
    [Return [返回值]]
EndFunc

 

参数

所有参数均由您定义。函数定义好后您就可以像其它内建函数一样调用它。

 

注意

参数前的关键字 ByRef(引用) 是可选的,它的意思是:(1) 该参数必须是变量; (2) 该变量必须可被函数修改(比如说不能是常量)。默认情况下,参数是以 值传递 的方式传递到函数的(这意味着被传递到函数中的只是变量的一份副本,函数对该副本的任何操作都不能更改原变量的值)。

使用关键字 Return(返回)可退出函数。和内建函数不同的是,用户定义函数的返回值一般是0,除非有需要才定义其它数值。

数组可作为参数传递给函数(或者被函数作为返回值返回),但在使用(传递或返回)时只需给出数组名即可(不用任何括号)。注意,函数内部不能出现其它函数的声明。

在参数表中被指定缺省值的参数叫做缺省参数,缺省值可以是宏。在定义带有缺省参数的函数时不能把缺省参数放在必要参数之间,这些缺省参数总是(必须)被放在参数表的后面位置。
在函数内部可通过宏 @NUMPARAMS 获得该函数被调用时传递进来的参数数量。

 

相关

Dim/Global/Local, #include

 

示例

; 带有三个自定义函数的示例脚本
; 请注意变量的使用,ByRef传递 以及 返回值(Return)的用法

$foo = 2
$bar = 5
msgBox(0,"今天是 " & today(), "$foo 等于 " & $foo)
swap($foo, $bar)
msgBox(0,"在变量 $foo 和 $bar 交换之后", "现在 $foo 的值是: " & $foo)
msgBox(0,"最后", "3 和 4 中较大的数是: " & max(3,4))
Exit

Func swap(ByRef $a, ByRef $b)  ;交换两个变量的内容
    Local $t
    $t = $a
    $a = $b
    $b = $t
EndFunc

Func today()  ;以 mm/dd/yyyy 的形式返回当前日期
    return (@MON & "/" & @MDAY & "/" & @YEAR)
EndFunc

Func max($x, $y)  ;返回两个数中的较大值
    If $x > $y Then
        return $x
    Else
        return $y
    EndIf
EndFunc

;示例脚本结束