本帖最后由 afan 于 2009-10-5 22:33 编辑
关键字参考
Func...Return...EndFunc
定义用户定义函数,接受零个或多个参数, 并可选择地返回一个结果.
Func functioname ( [Const] [ByRef] $param1, ..., [Const] [ByRef] $paramN, $optionalpar1 = value, ...)
...
[Return [value]]
EndFunc
参数
您可以随意设置参数. 以后象调用内置函数一样调用它们.
注意/说明
关键词 [Const] 是可选的,并在函数的执行期间参数值不能改变.一个变量申明为常量才能被传递给使用 [Const] 参数的函数.
关键字 [ByRef] 表明参数应视为参照原对象. 默认复制参数到一个新的变量, “ ByRef ”链接新的变量到原始参数. 当一个函数预计大量复制数据时,这些数据将存在重大的性能损失,此时 ByRef 通常是首选项. 请注意, 没有必要为 ByRef 传递一个指定的变量. 无名的临时变量,例如函数返回值, 可以作为参数传递给 ByRef .
关键字 [ByRef] 和 [Const] 并不重要, 只要他们在变量之前修改.
数组可以被传递到函数(并返回它们),只需使用没有任何括号的数组名称. 数组应该使用 [ByRef] 关键字传递给用户定义的函数,以避免拷贝数组中的所有数据.
可选参数由给它们指定一个默认值来定义. 该值可能是一个全局变量、宏指令或常量值. 可选参数总是出现在函数定义的最后. 在增加所有参数之后,第一个选择的参数也一定是可选的. 在函数内, 一些特定的参数在函数被调用时,能被 @NUMPARAMS 宏指令取回(见示例 2).
使用 Return 关键词退出函数. 与内建函数不同, 除非另外指定一个返回值,否则用户定义的函数返回 0.
请注意,函数声明不能出现在其它函数声明内.
示例/演示Opt('MustDeclareVars', 1)
Example1()
Example2()
; 示例 1
Func Example1()
; 有三个自定义函数的示例脚本
; 注意变量, ByRef 与 Return 的用法
Local $foo = 2
Local $bar = 5
msgBox(0,"今天是 " & today(), "$foo 等于:" & $foo)
swap($foo, $bar)
msgBox(0,"变量 $foo 和 $bar 交换后", "现在 $foo 的值是:" & $foo)
msgBox(0,"最后", "3 和 4 中较大的数是:" & max(3,4))
EndFunc ;==>Example1
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
;示例 1 脚本结束
; 示例 2
Func Example2()
; 示例脚本使用 @NumParams 宏指令
Test_Numparams(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
EndFunc ;==>Example2
Func Test_Numparams($v1 = 0, $v2 = 0, $v3 = 0, $v4 = 0, $v5 = 0, $v6 = 0, $v7 = 0, $v8 = 0, $v9 = 0, _
$v10 = 0, $v11 = 0, $v12 = 0, $v13 = 0, $v14 = 0, $v15 = 0, $v16 = 0, $v17 = 0, $v18 = 0, $v19 = 0)
Local $val
For $i = 1 To @NumParams
$val &= Eval("v" & $i) & " "
Next
MsgBox(0, "@NumParams 宏示例", "@NumParams =" & @NumParams & @CRLF & @CRLF & $val)
EndFunc
;结束示例 2
论坛有汉化的帮助,建议你搜索下~ |