函数参考


Call

调用用户自定义函数.可以包含字符串参数.

Call ( "函数名" [, 参数1 [, 参数2 [, 参数N ]]] )

参数

函数名 用户自定义的函数名称.
参数 要传递给自定义函数的参数.

返回值

成功: 返回值就是调用函数的返回值.@error 和 @extended 可能包含被被调用函数设置的值.
失败: 把 @error 设为 0xDEAD , @extended 设为 0xBEEF,说明指定函数不存在或者参数数量不对.

注意/说明

函数名 不能带有任何参数而且不能是 AutoIt 的内置函数.
函数(指函数名代表的字符串)可以传递参数到多个函数(指被CALL调用的函数),因此, ByRef 参数将不能被支持; 目前没办法返回一个 ByRef 参数.
一个特殊的数组可以被传递到个别参数. 这个数组必须将第一个元素设置位 "CallArgArray" 并且元素 1 - n 将会分别传递给被调用函数. 如果您使用这个特殊数组, 其它的参数将不会传递给 Call().见示例演示.
Call() 自己会设置 @error ,被调用的函数也可以设置 @error. 如果 Call() 设置 @error ,值将会是 0xDEAD 并且 @extended 同样也会被设置为 0xBEEF. 参考例子演示被调用函数未找到的情况.

相关

Execute

示例/演示


; 这里调用的一个函数可以接受没有参数/调用没用参数的自定义函数函数"Test1".
Call("Test1")

; 这里调用的一个函数接受一个参数,并传递了这个参数.
Call("Test2", "来自 Call() 的消息!")

; 演示如何使用一个特殊参数数组.
Global $aArgs[4]
$aArgs[0] = "CallArgArray" ; 这是必需的, 否则, Call() 不承认数组内容为一个参数.
$aArgs[1] = "这是一个字符串"    ; 第一个参数为一个字符串
$aArgs[2] = 47  ; 第二个参数为一个数字
Global $array[2]
$array[0] = "数组元素 0"
$array[1] = "数组元素 1"
$aArgs[3] = $array  ; 参数三为一个数组

; 我们构造好了这个特殊数组,现在我们来调用这个函数
Call("Test3", $aArgs)

; 怎么测试一个函数是不是存在.  可以使用下面的方法:
; 检查 @error 和 @extended 中的定义的失败值.
Local Const $sFunction = "DoesNotExist"
Call($sFunction)
If @error = 0xDEAD And @extended = 0xBEEF Then MsgBox(4096, "", "函数不存在.")

Func Test1()
    MsgBox(4096, "", "Hello")
EndFunc   ;==>Test1

Func Test2($sMsg)
    MsgBox(4096, "", $sMsg)
EndFunc   ;==>Test2

Func Test3($sString, $nNumber, $aArray)
    MsgBox(4096, "", "字符串为: " & @CRLF & $sString)
    MsgBox(4096, "", "数字为: "& @CRLF & $nNumber)
    For $i = 0 To UBound($aArray) - 1
        MsgBox(4096, "", "Array[" & $i & "] 数组包含:" & @CRLF & $aArray[$i])
    Next
EndFunc   ;==>Test3