jueves, noviembre 26, 2009

Harbour VS xHarbour, Las diferencias verdaderas (Parte 11)

Macros Multivalor:

En los primeros días de Harbour se agregó un soporte básico para macros multivalor los cuales pueden ser evaluados como una lista de valores, por ejemplo:
      ? &("1,2,3")
Debería mostrar esto:
      1,  2,  3
La implementación de esta extensión no fue aceptada por muchos desarrolladores de Harbour y fue una de las principales causas del surgimiento del "fork" xHarbour.

En Harbour dicha funcionalidad fue removida posteriormente e implementada desde cero usando distintos algoritmos y estructuras internas. Ahora Harbour soporta macros multivalor en código como este:
      proc main()
local s1 := "'a', 'b', 'c'", s2 := "1,3", a
? &s1
a := { { "|", &s1, 'x', &s2, 'y' }, 'x', &s2 }
? "a[1] items:"
aeval( a[1], { |x,i| qout( i, x ) } )
? "a["+s2+"] =>", a[ &s2 ]
return
xHarbour, que heredó la implementación original, después de 6 años, aún no puede ejecutar correctamente el código anterior.

Continuará....

1 comentario:

Walter Negro dijo...

El que sea capaz de encontrar un código razonable y útil, que implique una gran diferencia al implementarlo de otra forma, que lo escriba por favor.