Página 1 de 1
Duvida Sobre Classe - 'INLINE' ?
Enviado: 29 Abr 2012 15:05
por mateus301
Código: Selecionar todos
#include "hbclass.ch"
CLASS GarrafaDeCerveja
EXPORTED:
METHOD abre() INLINE ::lFechada := .F.
METHOD esquentar() INLINE ::lGelada := .F.
METHOD resfriar() INLINE ::lGelada := .T.
METHOD isFechada() INLINE ::lFechada
METHOD isGelada() INLINE ::lGelada
HIDDEN:
VAR lFechada AS LOGICAL INIT .T.
VAR lGelada AS LOGICAL INIT .F.
ENDCLASS
-----------------------
Minha duvida é oque o INLINE representado acima faz ?
Ele só tem um objetivo ? Ou pode ser usados para outras coisas ?
Agradeco desde já, Obrigado.
Duvida Sobre Classe - 'INLINE' ?
Enviado: 01 Mai 2012 12:07
por vailton
Boa tarde.
O "inline" citado acima é um recurso disponível para que, ao criar um método na classe, o programador já possa codificar a implementação do mesmo. Deste modo, você consegue diminuir a quantidade de linhas do seu código e ainda assim, facilitar (ou não) a leitura do mesmo.
Se pegarmos o trecho citado:
Código: Selecionar todos
METHOD abre() INLINE ::lFechada := .F.
METHOD esquentar() INLINE ::lGelada := .F.
METHOD resfriar() INLINE ::lGelada := .T.
Poderíamos escreve-lo também do seguinte modo:
Código: Selecionar todos
METHOD abre()
METHOD esquentar()
METHOD resfriar()
...
ENDCLASS
METHOD abre() CLASS GarrafaDeCerveja
::lFechada := .F.
RETURN
METHOD esquentar() CLASS GarrafaDeCerveja
::lGelada := .F.
RETURN
METHOD resfriar() CLASS GarrafaDeCerveja
::lGelada := .T.
RETURN
Note como as 3 (três) linhas acima utilizando INLINE tornam o código menor e ainda agilizam a leitura do mesmo, já que o programador não precisa procurar em outra parte do código pela sua implentação.
Espero ter ajudado.
Duvida Sobre Classe - 'INLINE' ?
Enviado: 03 Mai 2012 12:50
por Stanis Luksys
Olá,
É exatamente como o Vailton descreveu.
Este recurso é bastante utilizado quando você tem uma propriedade que é protegida dentro da classe, mas quer permitir que ela seja alterada em tempo de execução. Por exemplo:
Código: Selecionar todos
CLASS NomeDaClasse
PROTECTED:
VAR cText
VAR nNumber
EXPORTED:
METHOD setText(c) INLINE ::cText := AllTrim( c )
METHOD setNumber(n) INLINE ::nNumber := Round( n, 2 )
END CLASS
Muitas classes em várias linguagens funcionam assim.
É interessante, porque você abre a possibilidade de alterar a propriedade, mas por um único caminho, e pode tratar que tipo de informação está chegando nela, como no exemplo, o alltrim() e o round().
Abraços.