Fue una revoluci贸n el cambio de la macrocompilaci贸n por codeblocks.
En la 茅poca en que se cre贸 el tipo de dato CodeBlock hab铆a muy pocos lenguajes que lo tuvieran... desde hace relativamente poco tiempo otros lenguajes lo han incorporado con el nombre de "Closures" o "funciones an贸nimas".
Pero incluso ahora con el uso de la clase Symbol se pueden hacer cosas muy chulas:
PROCEDURE Main()
聽 聽LOCAL oSym := Symbol():New( "QOUT" )
聽 聽? "Now test the :Exec() method"
聽 聽oSym:Exec( "This string is being printed by QOUT" )
聽 聽oSym:Exec( "which is being invoked by the :Exec()" )
聽 聽oSym:Exec( "method in the Symbol class." )
聽 聽?
聽 聽? "symbol name: ", oSym:name
聽 聽? "Comparing QOut symbol with xOut symbol"
聽 聽? oSym:IsEqual( Symbol():New( "xOut" ) )
聽 聽? "done!"
聽 聽?
聽 聽RETURNY el no va m谩ssssssssssss podemos usar punteros a funciones, lo cual va un paso m谩s all谩 de los codeblocks:
procedure main()
聽 聽 local pFunc := @alert()
聽 聽
聽 聽 pFunc:exec( "Esto es una prueba de puntero a la funcion Alert()" )
聽 聽 Alert( pFunc:name() ) // Devuelve el nombre de la funcion apuntada
聽 聽
聽 聽 pFunc := @upper()
聽 聽 pruebaPuntero( pFunc ) // Llama a una funcion pasando un puntero a funcion
聽return
聽procedure pruebaPuntero( p )
聽 聽 alert( p:exec( "esto lo veras en mayusculas" ) )
聽returnHarbour tiene muchos secretos que lo convierten en un lenguaje super potente y de futuro...
Te imaginas Harbour en la web?
Pues eso es posible con Mod_Harbour!!!
Sevilla - Andaluc铆a