Func 对象

class Func extends Object

表示可自定义或内置的函数, 并提供一个接口来调用, 将参数与其绑定, 以及检索它或它的参数的信息.

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

Closure 类继承 Func, 但没有定义任何新的属性.

对于脚本中的每个内置函数或函数定义, 都有一个相应的只读变量, 其中包含一个 Func 对象. 这个变量直接用于调用函数, 但它的值也可以被读取, 以检索函数本身, 作为一个值. 例如:

InspectFn StrLen
InspectFn InspectFn

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

下面使用 "FuncObj" 作为任何 Func 对象的占位符, 因为 "Func" 就是类本身.

除了从 Object 继承的方法和属性外, Func 对象还具有以下预定义的方法和属性.

目录

方法

Call

调用一个函数.

FuncObj(Param1, Param2, ...)
FuncObj.Call(Param1, Param2, ...)

参数

Param1, Param2, ...

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

备注

调用一个值时, "Call" 方法是隐式的, 所以不需要显式指定.

Bind

为函数绑定参数.

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

参数

Param1, Param2, ...

任意数量的参数.

返回值

类型: Object

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

IsByRef

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

Boolean := FuncObj.IsByRef(ParamIndex)

参数

ParamIndex

类型: 整数

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

返回值

类型: 整数(布尔值)

如果参数为 ByRef, 此方法返回 1(true), 否则为 0(false). 如果 ParamIndex 无效, 则抛出异常.

IsOptional

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

Boolean := FuncObj.IsOptional(ParamIndex)

参数

ParamIndex

类型: 整数

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

返回值

类型: 整数(布尔值)

如果参数可选, 此方法返回 1(true) , 否则为 0(false). 如果 ParamIndex 无效, 则抛出异常.

备注

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

属性

Name

返回函数的名称.

FunctionName := FuncObj.Name

IsBuiltIn

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

Boolean := FuncObj.IsBuiltIn

IsVariadic

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

Boolean := FuncObj.IsVariadic

MinParams

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

ParamCount := FuncObj.MinParams

MaxParams

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

ParamCount := FuncObj.MaxParams

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