Documentazione di Gambas
Application Repository
Come...
Componenti
Da fare
Documentazione Sviluppatori
Documenti
Indice del linguaggio
LEGGIMI
Lessico
Licenza dello Wiki
Messaggi di errore
Panoramica del linguaggio
Array nativi
Assegnazione
Classi contenitore native
Costanti
Costanti predefinite
Dichiarazione di Array (o Matrice)
Dichiarazione di enumerazione
Dichiarazione di metodi
Dichiarazione di struttura
Dichiarazione di una proprietà
Dichiarazione di variabili locali
Dichiarazioni di costanti
Dichiarazioni di variabili
Espressioni
Eventi dichiarazioni
Eventi gestione
Eventi globali gestione
Formati definiti dall'utente
Funzioni aritmetiche
Funzioni di conversione
Funzioni di formattazione
Funzioni di localizzazione e traduzione
Funzioni di manipolazione dei bits
Funzioni di Stream e Input/Output
Funzioni di test sui caratteri
Funzioni intrinsiche
Funzioni logaritmi ed esponenziali
Funzioni numeriche casuali
Funzioni stringa
Funzioni su file e directory
Funzioni sui tipi di dati
Funzioni temporali
Funzioni trigonometriche
Funzioni varie
Gestione degli errori
Gestione dei Processi
Gestione delle classi e degli oggetti
Gestione delle funzioni esterne
Il modello a oggetti di Gambas
Loop degli eventi
Metodi di comparazione
Metodi speciali
Metodo Call
Numeri complessi
Numeri Interi
Numeri in virgola mobile
Operatori aritmetici
Operatori di assegnamento
Operatori logici
Operatori ordine di valutazione
Operatori stringa
Percorsi di File e Directory
Rappresentazione binaria dei dati
Sintassi della modalità file
Strutture di controllo e funzioni
Strutture di controllo sui cicli
Strutture di controllo varie
Tipi di dati
Uso di parole chiave riservate come identificatori
Registrazione
Ultime modifiche
Wiki Manual

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
6.773333333333

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