Skip to main content

Puntero: THIS

El THIS puntero es una variable especial que se utiliza para la programación orientada a objetos.

THIS es el puntero de un bloque de funciones a su propia instancia de bloque de funciones. A THIS El puntero está disponible automáticamente para cada bloque de funciones. Puedes usar THIS solo en métodos y en bloques de funciones. THIS está disponible para la implementación en Input Assistant en la categoría Palabras clave.

Desreferenciación del puntero: THIS^

. Uso de la THIS puntero
  • Si una variable local anula una variable de bloque de funciones en un método, puede establecer la variable de bloque de funciones con el THIS puntero. Ver ejemplo a continuación (1)

  • Si se hace referencia al puntero a la propia instancia de bloque de funciones del bloque de funciones para su uso en una función. (Ver ejemplo abajo (2))

ejemplo 100. Ejemplos

S T

THIS^.METH_DoIt();

FBD/CFC/LD

_cds_img_pointer_this.png


ejemplo 101. Ejemplo

El iVarB variable local anula la iVarB variable del bloque de funciones.

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();


ejemplo 102. Ejemplo

Una llamada de función requiere la referencia a su propia instancia.

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();


Sugerencia

THIS aún no está implementado para la lista de instrucciones (IL).