HasMethod

指定された値に指定された名前のメソッドがある場合、0 以外の数値を返します。

HasMethod := HasMethod(Value , Name, ParamCount)

パラメータ

Value

型:任意

ComObject 以外の任意の型の値。

Name

型:文字列

省略したときは、Value自体が呼び出し可能かどうかをチェックします。そうでないときは、チェックするメソッドの名前を指定します。

ParamCount
型:整数

省略したとき、またはパラメータ数が確認されなかったときは、オブジェクトが呼び出し可能である可能性が高いことを確認するために、Callメソッドに対して基本的なチェックが実行されます。

そうでないときは、メソッドまたは関数に渡されるパラメーターの数を指定します。指定された場合、メソッドの MinParams、MaxParams、IsVariadic プロパティを照会して、この数のパラメータを受け入れることができることを確認することができます。これらのプロパティが存在しない場合、パラメータ数の確認は行われません。

このカウントには、暗黙のthisパラメータを含めてはなりません。

戻り値

型:整数(ブーリアン)

この関数は、メソッドが見つかって検証に合格したとき(実行されたとき)は1 (true)を返し、そうでないときは0 (false)を返します。

備考

HasMethodは、GetMethodと同じ制限を受けます。

この機能は、ある値が特定のアクションをサポートしているかどうかを推定するために使用することができます。例えば、Callメソッドを持たない値はSetTimerに呼び出したり渡したりすることができず、__EnumメソッドもCallメソッドも持たない値はForに渡すことができません。ただし、パラメータ数など満たすべき要件があるため、メソッドが存在しても呼び出せることを保証するものではありません。

ParamCountを指定した場合、SetTimerなどの組み込み関数が行う検証と同等になります。

戻り値0 (false)は、値に__Callメタ関数が含まれる可能性があるため、必ずしもメソッドを呼び出せないことを示すわけではありません。ただし、__EnumがForによって呼び出されている場合など、特定のコンテキストでは__Callはトリガーされません。もし__Callが存在する場合、どのメソッドをサポートしているかを検出する方法はありません。

本機能は、プリミティブな値をサポートします。

オブジェクトHasBaseHasPropGetMethod

本機能の使用方法を説明します。

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