HasMethod

如果指定的值具有指定名称的方法, 则返回非零数字.

HasMethod := HasMethod(Value , Name, ParamCount)

参数

Value

类型: Any

除了 ComObject 之外的任何类型的任何值.

Name

类型: 字符串

如果省略, 检查 Value 本身是否可调用. 否则, 请指定, 要检查的方法名.

ParamCount
类型: 整数

如果省略(或者参数数没有被验证), 则会对 Call 方法进行基本检查, 以验证该对象是可调用的.

否则, 请指定将被传递给方法或函数的参数数量. 如果指定, 可以查询该方法的 MinParams, MaxParams 和 IsVariadic 属性, 以验证它是否可以接受这个参数指定的数量. 如果这些属性不存在, 参数计数就不会被验证.

这个计数不应该包括隐含的 this 参数.

返回值

类型: 整数(布尔值)

如果找到方法并通过验证(如果执行), 则返回 1(true), 否则返回 0(false).

备注

HasMethod 与 GetMethod 具有同样的限制.

此函数可用于评估某个值是否支持特定操作. 例如, 没有调用方法的值不能被调用或传递给 SetTimer, 而没有 __Enum 方法或 Call 方法的值不能传递给 For. 但是, 方法的存在并不保证可以调用它, 因为必须满足一些要求, 比如参数计数.

当指定 ParamCount 时, 该函数执行的验证等同于 SetTimer 等内置函数所执行的验证.

返回 0(false) 并不一定表示不能调用该方法, 因为该值可能具有一个 __Call 元-函数. 但是, __Call 在特定的上下文中, 如 For 调用 __Enum 时, 不会触发调用. 如果 __Call 存在, 则无法检测它可能支持的方法.

函数支持原始值.

Objects, HasBase, HasProp, GetMethod

示例

说明该函数的使用.

MsgBox HasMethod(0, "HasMethod") ; 1
MsgBox HasMethod(0, "Call") ; 0