Le Costanti

Da Gambas-it.org - Wikipedia.

Se un valore è utilizzato in modo ripetuto all'interno dell'intero programma senza mai subire variazioni, è opportuno sostituirlo con un nome simbolico, definendo all'inizio del programma un identificatore di costante mediante la parola chiave Const.

Il nome attribuito alla Costante può contenere caratteri alfabetici (solitamente per convenzione in maiuscolo) e numerici posti nelle modalità accettate da Gambas.

Ovviamente il valore assegnato all'inizio alla Costante, non può essere variato nel corso del programma.

Essendo poste al di fuori delle routine, le Costanti hanno la qualità di essere globali [Nota 1]. Inoltre, esse possono essere Pubbliche o Private.

Esempio:

Private Const NOME_DELLA_COSTANTE As Integer = 4
' Ora, quindi, all'interno del programma si potrà usare l'identificatore NOME_DELLA_COSTANTE al posto del numero 4


Public Sub Form_Open()

 Dim a As Integer

 a = 5 * NOME_DELLA_COSTANTE
 
 Print a

End

In console sarà mostrato coerentemente il risultato: 20


Particolarità dell'uso della Costante in Gambas

Va sottolineato che alle Costanti non è possibile associare una variabile, una funzione o un'operazione.
Il valore della Costante deve essere definito in fase di dichiarazione e non deve puntare a nessuna cosa al di fuori della dichiarazione stessa.
Pertanto, ad esempio:

Public Const NOME_COSTANTE As Integer = 1             Corretto
Private Const NOME_COSTANTE As String = "aBc"         Corretto
Private Const NOME_COSTANTE As String = "\x0F"        Corretto
Public Const NOME_COSTANTE As Long = CLong(1234)               ERRATO !
Private Const NOME_COSTANTE As Boolean = (Not nome_variabile)  ERRATO !
Private Const NOME_COSTANTE As Integer = 2108 * 1969           ERRATO !

La Costante in Gambas consente di sostituire la funzione Chr() con i caratteri "escape" attualmente implementati ed attivi, come i seguenti:

Carattere escape|Equivalente ASCII
\t|Chr(9)
\n|Chr(10)
\r|Chr(13)

Così, avremo ad esempio:

Private Const NOME_COSTANTE As String = "\n"


Note

[1] Globale: ha effetto in tutta la classe e in tutte le funzioni contenute nella stessa classe.


Riferimenti