Página 1 de 1

ENABLE TYPE CLASS ALL, alguém usa?

Enviado: 30 Mar 2021 22:05
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

ENABLE TYPE CLASS ALL, alguém usa?

Enviado: 30 Mar 2021 22:52
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

ENABLE TYPE CLASS ALL, alguém usa?

Enviado: 31 Mar 2021 08:37
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.