GLBasic forum

Other languages => GLBasic - es => Topic started by: mentalthink on 2011-Aug-12

Title: sobre el "comando" .self
Post by: mentalthink on 2011-Aug-12
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.
Title: Re: sobre el "comando" .self
Post by: OscarBraindeaD on 2011-Aug-12
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
Title: Re: sobre el "comando" .self
Post by: Slydog on 2011-Aug-12
'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
Title: Re: sobre el "comando" .self
Post by: mentalthink on 2011-Aug-12
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.