指定された変数に値が割り当てられている場合、0以外の数値を返します。
Boolean := IsSet(Var) Boolean := IsSetRef(&Ref)
型:変数
直接の変数参照です。事例:IsSet(MyVar)
。
型:VarRef
変数への間接的な参照。これは通常、IsSetRef(&MyVar)
のように直接渡されるのではなく、VarRefを含むパラメータを再参照する前にチェックするような間接的なものである。
この関数は VarまたはRef で表される変数に値が割り当てられていれば1 (true)を返し、そうでなければ0 (false)を返します。
IsSet(MyGlobalVar)
のように、変数を直接チェックする場合は、IsSetを使用します。
IsSetRefを使用すると、以下の例のように、通常変数に含まれるVarRefをチェックすることができます。
値が割り当てられていない変数は、uninitialized variableとも呼ばれます。初期化されていない変数を読み込もうとすると、例外が発生します。IsSetは、グローバル変数や静的変数の初回使用時の初期化など、これを回避するために使用することができます。
注: static my_static_array := []
のような静的初期化子は、実行中に最初に到達したときに一度だけ評価されるため、通常、IsSetの使用は必要ありません。
IsSetは関数呼び出しと同じ構文を使っていますが、関数というより演算子と考えた方がいいかもしれません。キーワードIsSetは、ここに示す用途のために予約されており、変数や関数として再定義することはできない。初期化されていない変数を渡そうとするとエラーが発生するため、IsSetを間接的に呼び出すことはできない。
IsSetRefは、参照演算子と併用することで、特定の変数をチェックすることも可能です。このような使い方をする場合、変数がグローバルな場合は最初に宣言する必要があることに注意してください。例えば、IsSetRef(&MyVar)
の&
は、global MyVar
の宣言がない想定ローカル関数内で使用すると、MyVarがデフォルトでローカル変数に解決されます。
Loop 2 if !IsSet(MyVar) ; MyVarの最初の「使用」か? MyVar := A_Index ; 初期化 MsgBox Function1(&MyVar) MsgBox Function2(&MyVar) Function1(&Param) ; ByRefパラメータ { if IsSet(Param) ; MyVarのエイリアスであるParamそのものを渡します。 return Param ; ByRefパラメータは自動的に再参照される。 else return "unset" } Function2(Param) { if IsSetRef(Param) ; Paramが含むVarRefを渡す。 return %Param% ; 明示的にParamをデリファレンスする。 else return "unset" }