José,
Un array contiene y puede contener mucha información, por lo que no es práctico ir moviendo esa información de un sitio a otro. En vez de eso, lo que se pasa de un sitio a otro es su "dirección", es decir, en "donde está". A eso le decimos que se pasa por "referencia".
Clipper, para implementar los objetos, lo que hizo fué usar arrays, que son un "conjunto de datos" y dotarles de unos determinados comportamientos, definidos por la "clase" a la que pertenecen. Este modelo se implementó de igual forma en Harbour/xHarbour.
Para comprobar que un objeto es un array, puedes hacer:
MsgInfo( Len( ErrorNew() ) ) // ErrorNew() crea un objeto error.
De la misma forma puedes acceder a sus datos directamente, como si fuese un array:
- Code: Select all Expand view
oError = ErrorNew()
for n = 1 to Len( oError )
MsgInfo( oError[ n ] )
next
Internamente al array se le ha asociado un "puntero" a su clase, asi se sabe como ha de comportarse al recibir determinados mensajes.
Si tienes alguna duda más, con gusto intentaré ayudar