Skip to main content

ポインター: THIS

The THIS ポインタは、オブジェクト指向プログラミングに使用される特別な変数です。

THIS 自身の関数ブロックインスタンスへの関数ブロックのポインタです。 A THIS ポインタは、機能ブロックごとに自動的に使用可能になります。使用できます THIS メソッドと機能ブロックでのみ。 THIS カテゴリの入力アシスタントでの実装に使用できます キーワード

ポインターの間接参照: THIS^

. の使用 THIS ポインター
  • ローカル変数がメソッド内の関数ブロック変数をオーバーライドする場合は、関数ブロック変数を次のように設定できます。 THIS ポインタ。以下の例を参照してください(1)

  • 関数ブロック自体の関数ブロックインスタンスへのポインタが、関数で使用するために参照されている場合。 (以下の例(2)を参照)

100.

ST

THIS^.METH_DoIt();

FBD / CFC / LD

_cds_img_pointer_this.png


101.

The iVarB ローカル変数は iVarB 機能ブロック変数。

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
iVarA := 1;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    // The local variable iVarB is set.
    THIS^.iVarB := 222;    // The function block variable iVarB is set even though iVarB is obscured.

PROGRAM PLC_PRG
VAR
   MyfbB: fbB;
END_VAR

MyfbB(iVarA:=0, iVarB:= 0);
MyfbB.DoIt();


102.

関数呼び出しには、それ自体のインスタンスへの参照が必要です。

FUNCTION funA
VAR_INPUT
    pFB: fbA;
END_VAR
...;

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
...;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    //The local variable iVarB is set.
    funA(pFB := THIS^);    //funA is called via THIS^.

PROGRAM PLC_PRG
VAR
    MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();


ヒント

THIS 命令リスト(IL)にはまだ実装されていません。