// The example demonstrates usage of scalar classes.
#include "HbClass.ch"
PROCEDURE Main()
LOCAL aVar := {}
LOCAL bDisplay := {|x| Qout( x:asString() ) }
LOCAL pPointer := ( @Main() )
ENABLE TYPE CLASS ALL
CLS
aVar:Init( 2 )
aVar:AtPut( 1, "One" )
aVar:AtPut( 2, 2 )
aVar:InsertAt( 3, "Three" )
Alert( "Found at pos: " + aVar:IndexOf( "Three" ):asString() )
aVar:Do( bDisplay )
aVar:AddAll( { 4, "Five", 6 } )
? aVar:AsString
? bDisplay:asString()
? pPointer:asString()
RETURN
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
No método METHOD IndexOf( x ) da classe ScalarObject tem um bug, o fonte é tescalar.prg na pasta D:\Projetos_GIT\harbour-fork\src\rtl,
O erro acontece aqui IF elem = x
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
Já pensei em usar isso, mas fugir do tradicional pode complicar...
Por exemplo em NET, é normal usar Var:ToString()
No ADO, por exemplo, acabei criando: variavel:Date(), variavel:Number(), variavel:String(), variavel:value()
Achei que não iria acostumar com o ToDate(), ToNumber(), ToString(), ToValue()
No meu caso facilitou, porque campo:Number( xxx ) vai retornar 1, não importa se o conteúdo for 1 ou "1".
ou retornar 0, caso o conteúdo seja NULL.
Isso é bem melhor do que toda hora ficar testando se pode ter conteúdo nulo. Se é pra retornar número vai sempre retornar número.
Isso de função escalar poderia substituir essa "conversão", mas.... é chato trabalhar diferente de todo mundo... ou pode deixar muito preso a algum recurso específico da linguagem, o que pode transformar algo muito interessante em algo que depois pode atrapalhar.
É aquela tal história:
Analisar se realmente vale a pena, ou se é apenas uso por "moda".
Se justificar o uso, é ir em frente, senão melhor deixar de lado até aparecer uma boa oportunidade.
Igual usar classe: vale a pena? lógico que sim, mas isso não significa usar classe até pra somar 1 + 1, é usar em situações onde isso vai valer a pena no conjunto geral.
Lembrando que, ao usar classe, a primeira coisa que se perde é a checagem feita pela compilação, porque métodos/propriedades não tem como o compilador conferir.
Então... só vale a pena se... valer a pena o custo/benefício, se o que vamos ganhar tem mais vantagem sobre o que vamos perder.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2) "The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell" https://github.com/JoseQuintas/