Funcオブジェクト

class Func extends Object

Represents a user-defined or built-in function and provides an interface to call it, bind parameters to it, and retrieve information about it or its parameters.

関数のように呼び出すことができる他のオブジェクトについては、関数オブジェクトをご覧ください。

ClosureクラスはFuncを拡張していますが、新しいプロパティは定義していません。

スクリプト内の各組込み関数または関数定義に対して、Funcオブジェクトを含む対応する読み取り専用変数が存在します。この変数は、関数を呼び出すために直接使われますが、その値を読み込むことで、関数そのものを、値として取り出すこともできます。事例:

InspectFn StrLen
InspectFn InspectFn

InspectFn(fn)
{
    ; 渡された関数に関する情報を表示する。
    MsgBox fn.Name "() is " (fn.IsBuiltIn ? "built-in." : "user-defined.")
}

「Func」はクラスそのものなので、「FuncObj」は、任意のFuncオブジェクトのプレースホルダーとして以下使用します。

Funcオブジェクトは、Objectから継承されたメソッドとプロパティに加え、以下の定義済みのメソッドとプロパティを持ちます。

目次

メソッド

Call

関数を呼び出します。

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

パラメータ

Param1, Param2, ...

パラメータと戻り値は、関数で定義されます。

備考

Call」メソッドは、値を呼び出す際に暗黙の了解となっているため、明示的に指定する必要はない。

Bind

Binds parameters to the function.

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

パラメータ

Param1, Param2, ...

パラメータの数は問いません。

戻り値

型:オブジェクト

This method returns a BoundFunc object.

IsByRef

パラメータがByRefであるかどうかを判定します。

Boolean := FuncObj.IsByRef(ParamIndex)

パラメータ

ParamIndex

型:整数

省略された場合、Booleanは、関数が ByRef パラメータを持つかどうかを示します。Otherwise, specify the one-based index of a parameter.

戻り値

型:整数(ブーリアン)

This method returns 1 (true) if the parameter is ByRef, otherwise 0 (false). ParamIndexが無効な場合は、例外が発生します。

IsOptional

パラメータがオプションであるかどうかを判定します。

Boolean := FuncObj.IsOptional(ParamIndex)

パラメータ

ParamIndex

型:整数

省略された場合、Booleanは、関数が任意のパラメータを持つかどうかを示します。Otherwise, specify the one-based index of a parameter.

戻り値

型:整数(ブーリアン)

This method returns 1 (true) if the parameter is optional, otherwise 0 (false). ParamIndexが無効な場合は、例外が発生します。

備考

関数が変種である場合、パラメータを正式に宣言する必要はありません。組込機能に対応しています。

プロパティ

Name

関数の名前を返します。

FunctionName := FuncObj.Name

IsBuiltIn

Returns 1 (true) if the function is built-in, otherwise 0 (false).

Boolean := FuncObj.IsBuiltIn

IsVariadic

Returns 1 (true) if the function is variadic, otherwise 0 (false).

Boolean := FuncObj.IsVariadic

MinParams

必要なパラメータの数を返します。

ParamCount := FuncObj.MinParams

MaxParams

ユーザー定義関数の場合は正式に宣言されたパラメータの数、組み込み関数の場合は最大パラメータ数を返します。

ParamCount := FuncObj.MaxParams

関数がvariadicの場合、ParamCountは"variadic*"パラメータに溢れることなく関数が受け入れることができるパラメータの最大数を示します。