# Func 对象[v1.1.00+]

表示可以被脚本调用的自定义或内置的函数. Func 返回这种类型的对象.

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

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

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

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

## 对象成员

属性:

- Name: 返回函数的名称.
- IsBuiltIn: 内置函数返回 true, 否则返回 false.
- IsVariadic: 当函数为可变参数返回 true, 否则返回 false .
- MinParams: 返回函数必要参数的数目.
- MaxParams: 对于用户定义函数返回正式声明的参数数目, 对于内置函数返回最大的参数数目.

方法:

- Call: 调用函数.
- Bind: 为函数绑定参数并返回绑定函数对象.
- IsByRef: 确定一个参数是否为 ByRef 类型.
- IsOptional: 确定一个参数是否是可选的.

## 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, ...
  任意数量的参数.

详情和例子, 请参阅绑定函数对象.

## Name

返回函数的名称.

    FunctionName := Func.Name

## IsBuiltIn

内置函数返回 true, 否则返回 false.

    Boolean := Func.IsBuiltIn

## IsVariadic

当函数为可变参数返回 true, 否则返回 false.

    Boolean := Func.IsVariadic

## MinParams

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

    ParamCount := Func.MinParams

## MaxParams

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

    ParamCount := Func.MaxParams

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

## IsByRef

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

    Boolean := Func.IsByRef(ParamIndex)

ParamIndex
  可选: 基于 1 的参数索引. 如果省略, Boolean 表示此函数是否含有 ByRef 参数.

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

## IsOptional

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

    Boolean := Func.IsOptional(ParamIndex)

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

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

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

dftg