ENABLE TYPE CLASS ALL, alguém usa?

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

ENABLE TYPE CLASS ALL, alguém usa?

Mensagem por asimoes »

Código: Selecionar todos

LOCAL aVar := {}

   ENABLE TYPE CLASS ALL

   aVar:Init( 2 )
   aVar:AtPut( 1, "One" )
   aVar:AtPut( 2, 2 )

Código: Selecionar todos

// 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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

ENABLE TYPE CLASS ALL, alguém usa?

Mensagem por asimoes »

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)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ENABLE TYPE CLASS ALL, alguém usa?

Mensagem por JoséQuintas »

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/
Responder