sobre el "comando" .self

Previous topic - Next topic

mentalthink

Hola alguién es tan amable de explicarme esto de .self, lo he visto en algunos códigos, y aunque he leído en el libro de MrTatoad algo, pues no lo entiendo,  :'(

Gracias,

Iván J.

OscarBraindeaD

#1
Hola Mentalthink,
El self se usa para referirse desde una instancia de un objeto a una propiedad de sí misma. Por ejemplo, imagina que tenemos un objeto de tipo nave , entre otras, este objeto -este tipo- tiene una propiedad que es vida. Si, desde los métodos del type nave, me quiero referir a mi variable local vida, una de las formas, es usar self.vida... por ejemplo:

Dentro de algún método de la clase nave:
Code (glbasic) Select

IF self.vida<=0
   crearNuevaNave=1
ENDIF


Al menos así lo he usado en otros lenguajes y en éste, imagino, será parecido.

Espero haberme explicado!
Salud

Slydog

#2
'self' refers to a TYPE's member variable from within a FUNCTION in that TYPE.
It can only be used inside of a FUNCTION that's inside a TYPE.

Here's an example of OscarBraindeaD's explanation, using GLB code:

Code (glbasic) Select
LOCAL ship AS TShip
ship.life = 100.0
ship.ApplyDamage(20.0)

TYPE TShip
    life# = 0.0
    colour% = RGB(255,0,0)

    FUNCTION ApplyDamage: amount#
        DEC self.life, amount
        IF self.life < 0 THEN self.life = 0
    ENDFUNCTION
ENDTYPE
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

mentalthink

Gracias OscarBraindDead, me queda bastante claro con tú explicación y la de Slydog.
Thanks Slydog, I have now a more clear idea whit your explanation and the OscarBrainDead explanation.

Thanks to both...

Iván J.