1 de octubre de 2017

El alcance de CREATEOBJECT

Artículo original: The scope of CREATEOBJECT
http://www.foxpert.com/KnowlBits_200701_3.htm
Autor: Christof Wollenhaupt
Traducido por: Ana María Bisbé York


En ocasiones, uno llega a entender que algunas cosas son absolutamente desaprovechadas. Una de ellas es el alcance de CREATEOBJECT(). La primera vez que usted instancia un objeto desde una clase, Visual FoxPro crea una plantilla del objeto con todas los valores de las propiedades definidas en la clase. Si la definición de clases contiene una expresión para alguna de las propiedades, Visual FoxPro la evalúa en ese momento. Para futuras instancias, Visual FoxPro utiliza el valor de la expresión evaluada anteriormente.

Ahora, la parte desaprovechada de este artículo: Todas las propiedades de clases son evaluadas en el ámbito del procedimiento o método que instancia el objeto. Esto significa, que en las expresiones de propiedades de clases puede acceder a todas las variables locales en ese procedimiento:

Local lcVar, loRef
lcVar = "Hi"
loRef = CreateObject("Test")
? loRef.cTest

Define Class Test as Custom
 cTest = m.lcVar
EndDefine

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.