Func 对象[v1.1.00+]

表示自定义或内置的函数, 并提供一个接口来调用, 将参数与其绑定, 以及检索它或它的参数的信息. Func() 返回这种类型的对象.

有关其他可以像函数一样调用的对象的信息, 请参阅函数对象.

对 Func 对象的引用也被称为 函数引用. 要获取函数引用, 请使用 Func 函数, 例如:

; 引用一个名为 "StrLen" 的函数.
fn := Func("StrLen")

; 显示函数的信息.
MsgBox % fn.Name "() is " (fn.IsBuiltIn ? "built-in." : "user-defined.")

目录

方法

Call

调用函数.

Func.Call(Param1, Param2, ...)  ; 需要 [v1.1.19+]
Func.(Param1, Param2, ...)  ; 旧的样式 - 不推荐

参数

Param1, Param2, ...

参数和返回值由函数定义.

备注

[v1.1.07+]: %Func%() 可通过名称或引用来调用一个函数, 或者通过调用对象的 __Call 元函数. 应该尽量使用这种语法来替代 Func.() 这种旧的语法.

Bind [v1.1.20+]

为函数绑定参数.

BoundFunc := Func.Bind(Param1, Param2, ...)

参数

Param1, Param2, ...

任意数量的参数.

返回值

此方法返回绑定函数对象.

IsByRef

确定一个参数是否为 ByRef(按地址传递) 类型.

Boolean := Func.IsByRef(ParamIndex)

参数

ParamIndex

如果省略, Boolean 表示此函数是否含有 ByRef 参数. 否则, 请指定基于 1 的参数索引.

返回值

如果函数为内置函数或 ParamIndex 无效时, 此方法返回空字符串; 否则返回一个布尔值, 表示此参数是否为 ByRef 类型.

IsOptional

确定一个参数是否是可选的.

Boolean := Func.IsOptional(ParamIndex)

参数

ParamIndex

如果省略, Boolean 表示此函数是否含有可选参数. 否则, 请指定基于 1 的参数索引.

返回值

如果 ParamIndex 无效, 此方法返回空字符串; 否则返回布尔值(true / false) 表示此参数是否可选.

备注

如果此函数是可变参数的, 那么参数可以不进行正式声明. 支持内置函数.

属性

Name

返回函数的名称.

FunctionName := Func.Name

IsBuiltIn

内置函数返回 1(true), 否则返回 0(false).

Boolean := Func.IsBuiltIn

IsVariadic

当函数为可变参数返回 1(true), 否则返回 0(false).

Boolean := Func.IsVariadic

MinParams

返回函数必要参数的数目.

ParamCount := Func.MinParams

MaxParams

对于用户定义函数返回正式声明的参数数目, 对于内置函数返回最大的参数数目.

ParamCount := Func.MaxParams

如果函数是可变参数的, ParamCount 表示函数在不考虑 "variadic*" 可变参数的情况下可接受的最大参数数目.

函数

Func [v1.1.00+]

获取一个函数的引用.

FunctionReference := Func(FunctionName)

参数

FunctionName

要获取引用的函数名称. 此函数必须显式存在于脚本中.

返回值

Func 返回FunctionName 的引用.如果 FunctionName 不显式存在于脚本中(通过 #Include 或非动态调用的库函数等方式), 则返回 0.

备注

Func 可用于调用函数或获取函数的信息, 比如函数参数的最小和最大数目等.

下面的示例检索一个函数的引用, 并显示其相关信息:

fn := Func("StrLen")
MsgBox % fn.Name "() 是 " (fn.IsBuiltIn ? "内置函数." : "用户定义的函数.")