@
 Passagem por referência -- unário                 (Especial)
------------------------------------------------------------------------------

 Syntax

     @<idVar>

 Operandos

     <idVar> é qualquer identificador de variável válido do Clipper que
     faz passagem por referência, exceto para campos de um banco de dados.
     Os campos de bancos de dados podem apenas ser passados por valor.

 Descriçao

     O operador passagem por referência (@) é utilizado para passar uma
     variável por referência a funçoes ou rotinas invocadas com a sintaxe de
     chamada de funçoes.   O método padrao de passagem  de argumentos é por
     valor para todos os tipos de dados, inclusive referências a vetores e
     objetos.   O operador  passagem  por referência (@)  é um operador do
     tipo prefixo unário cujo operando pode ser qualquer nome de variável.

     Passar uma variável por referência significa que é passada uma
     referência ao valor do argumento, e nao uma cópia do argumento.  O
     parâmetro receptor enao refere-se à mesma localizaçao em memória que o
     argumento.  Caso a rotina invocada altere o valor do parâmetro
     receptor, ela também altera o argumento passado da rotina que está
     fazendo a chamada.

     Passar uma variável por valor significa que o argumento é avaliado e
     seu valor é copiado para o parâmetro receptor.  As alteraçoes de um
     parâmetro receptor sao locais da rotina invocada e sao perdidos quando
     a rotina termina.

 Exemplos

     Este exemplo demonstra a diferença entre passar um argumento de funçao
     definida pelo usuário por referência e por valor:

     x := 100
     MyFunc(@x)           // Passagem por referência
     ? x                  // Resulta: 10
     x := 100
     MyFunc(x)            // Passagem por valor
     ? x                  // Resulta: 100

     FUNCTION MyFunc( nNumber )
        nNumber := SQRT( nNumber )
        RETURN nNumber
 To download this example - click here.

See Also: FUNCTION PROCEDURE