// 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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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/