Declaração de métodos

Procedures

[ FAST ] [ STATIC ] { PUBLIC | PRIVATE } { PROCEDURE | SUB } Identifier ( [ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ] [ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ] ) ... END

Isto declara um procedimento, ou seja, um método que não tem retorno.

A palavra-chave END indica o fim do procedimento.

Funções

[ FAST ] [ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB } Identifier ( [ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ] [ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ] ) AS Datatype ... END

Isto declara uma função, ou seja, um método que retorna um valor.

A palavra-chave END indica o fim da função.

O tipo de dados do valor de retorno deve ser especificado.

É claro que essas declarações devem ser escritos em uma linha única. Elas são separadas da forma que são lidas.

Use a palavra-chave RETURN para terminar a função e passar o valor de retorno para o chamador.

Exemplos

FUNCTION Calc(fX AS Float) AS Float
  RETURN Sin(fX) * Exp(- fX)
END

PUBLIC SUB Button1_Click()
  PRINT Calc(0);; Calc(0.5);; Calc(1)
END

0 0.290786288213 0.309559875653

Método de acesso

O método é acessível em todos os lugares na classe que é declarado.

  • Se a palavra-chave PUBLIC for especificada, ele também é acessível nas outras classes que têm uma referência a um objeto dessa classe.

  • Se a palavra-chave STATIC for especificada, o método só pode acessar as variáveis estáticas da classe.

Argumentos do método

Todos os argumentos do método são separados por vírgulas.

  • Se a palavra-chave OPTIONAL for especificada, todos os parâmetros após a palavras-chave são opcionais. Você pode especificar um valor padrão após a declaração do parâmetro usando o sinal de igual.

  • Se a lista de parâmetros termina com ..., então o método pode levar argumentos extras. Cada argumento adicional passado para o método é acessível com a classe Param.

Exemplos

STATIC PUBLIC PROCEDURE Main()
...
PUBLIC FUNCTION Calc(fA AS Float, fB AS Float) AS Float
...
PRIVATE SUB DoIt(sCommand AS String, OPTIONAL bSaveIt AS Boolean = TRUE)
...
STATIC PRIVATE FUNCTION MyPrintf(sFormat AS String, ...) AS Integer

Argumentos passados por referência

Quando a palavra-chave BYREF for especificada, o argumento deve ser uma expressão de atribuição que será modificada pela função chamada.

Exemplos

SUB ConvPixelToCentimeter(BYREF Value as Float, Dpi AS Integer)

  Value = Value / Dpi * 2.54

END

PUBLIC SUB Main()

  DIM Size AS Float

  Size = 256
  ConvPixelToCentimeter(BYREF Size, 96)
  PRINT Size

END

6.773333333333

Se você não especificar ByRef na chamada da função, então o argumento é passado por valor, mesmo se ByRef foi especificado na declaração da função.

Em outras palavras: a função chamada permite um argumento a ser passado por referência, ao passo que o chamador decide isso.

Just In-Time Compilation

Desde 3.2

Se a palavra-chave FAST for utilizada, então o método será otimizado pelo Just In Time Compiler.

Veja também