Dichiarazione di metodi
Procedure:
[ STATIC ] { PUBLIC | PRIVATE } { PROCEDURE | SUB }
Identificatore
(
[ Parametri AS TipoDato [ , ... ] ] [ , ]
[ OPTIONAL Parametro Opzionale AS TipoDAto [ , ... ] ] [ , ] [ ... ]
)
...
END
[ STATIC ] { PUBLIC | PRIVATE } { PROCEDURE | SUB }
Identificatore
(
[ [ BYREF ] Parametri AS TipoDato [ , ... ] ] [ , ]
[ OPTIONAL [ BYREF ] Parametro Opzionale AS TipoDato [ , ... ] ] [ , ] [ ... ]
)
...
END
Questo dichiara una procedura, cioè. un metodo che non restituisce niente.
La parola chiave
END determina la fine della procedura.
Funzioni:
[ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB }
Identificatore
(
[ Parametri AS TipoDato [ , ... ] ] [ , ]
[ OPTIONAL Parametro Opzionale AS TipoDato [ , ... ] ] [ , ] [ ... ]
)
AS TipoDato
...
END
[ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB }
Identificatore
(
[ [ BYREF ] Parametri AS TipoDato [ , ... ] ] [ , ]
[ OPTIONAL [ BYREF ] Parametro Opzionale AS TipoDato [ , ... ] ] [ , ] [ ... ]
)
AS TipoDato
...
END
Questo dichiara una funzione, cioè un metodo che restituisce un valore.
La parola chiave
END indica la fine della funzione.
È necessario specificare il tipo di dati del valore restituito.
Naturalmente, queste dichiarazioni devono essere scritte su una riga univoca. Qui vengono separate in modo che sia leggibile.
Utilizzare la parola chiave
/wiki/cat/return per terminare la funzione e restituire il valore di ritorno al chiamante.
Esempi
Public Sub Main()
Print Calc(0);; Calc(0.5);; Calc(1)
End 'Determine if the first string ends with the second string
Function Calc(fX As Float) As Float
Return Sin(fX) * Exp(- fX)
End
0 0.290786288213 0.309559875653
Accesso ai metodi:
Il metodo è accessibile ovunque nella classe dove esso è dichiarato.
-
Se la parola chiave (
PUBLIC
) viene specificata, esso è accessibile anche in altre classi che hanno un riferimento a un'oggetto (object) di questa classe.
-
Se la parola chiave (
STATIC
) viene specificata, il metodo può accedere solo alle variabili statiche della classe.
Argomenti dei metodi:
Tutti gli argomenti di un metodo sono separati da virgole.
-
Se la parola chiave (
OPTIONAL
) viene specificata , allora tutti i parametri dopo la parola chiave, sono opzionali. E' possibile specificare un valore predefinito dopo la dichiarazione del parametro utilizzando il segno di uguale.
-
Se l'elenco dei parametri termina con
...
, allora il metodo può accettare argomenti extra. Ogni argomento extra passato al metodo, è accessibile con la classe Param .
Esempi
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
Argomenti passati per riferimento:
Quando la parola chiave (
BYREF
) viene specificata, L'argomento deve essere un'espressione di assegnazione che verrà modificata dalla funzione chiamata.
Esempi
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
Se non si specifica BYREF nella chiamata di funzione, l'argomento viene passato per valore, anche se BYREF è stato specificato nella dichiarazione di funzione.
In altre parole: la funzione chiamata
consente di passare un argomento per riferimento, ma è il chiamante quello che la
determina.
Compilazione Just In-Time
Dal 3.2
Se viene utilizzata la parola chiave
FAST
, il metodo sarà ottimizzato dal
Just In Time Compiler.
Vedi anche