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
Since 3.2
Se a palavra-chave
FAST
for utilizada, então o método será otimizado pelo
Just In Time Compiler.
Veja também