Author Topic: sobre el "comando" .self  (Read 1769 times)

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3366
  • Integrated Brain
    • View Profile
sobre el "comando" .self
« 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.

Offline OscarBraindeaD

  • Mc. Print
  • *
  • Posts: 20
    • View Profile
Re: sobre el "comando" .self
« Reply #1 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
« Last Edit: 2011-Aug-12 by OscarBraindeaD »

Offline Slydog

  • Prof. Inline
  • *****
  • Posts: 930
  • KodeSource
    • View Profile
    • KodeSource
Re: sobre el "comando" .self
« Reply #2 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
« Last Edit: 2011-Aug-12 by Slydog »
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3366
  • Integrated Brain
    • View Profile
Re: sobre el "comando" .self
« Reply #3 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.