Dichiarazione di una proprietà
PROPERTY [ READ ] Identifier AS Datatype
Dichiara una proprietà di una classe.
Se viene specificata la parola chiave
READ, la proprietà sarà di sola lettura.
Una volta dichiarata la proprietà, occorre implementarla: è necessario scrivere una funzione per leggere la proprietà e, se non è di sola lettura, una funzione per scrivere nella proprietà.
Il nome della funzione di lettura è il nome della proprietà seguito da un carattere di sottolineatura (trattino basso) e la parola
Read
. Questa funzione non accetta argomenti e deve restituire dei dati il cui tipo è uguale al tipo dei dati della proprietà.
Il nome della funzione di scrittura è il nome della proprietà seguito da un carattere di sottolineatura e dalla parola
Write
. Questa funzione è una procedura che non restituisce nulla. Richiede solo un argomento che ha lo stesso tipo del tipo di dati della proprietà.
Esempio
PROPERTY Enabled AS Boolean
PROPERTY READ Handle AS Integer
...
PRIVATE $bEnabled AS Boolean
PRIVATE $iHandle AS Integer
' Implementa la proprietà Enabled
FUNCTION Enabled_Read() AS Boolean
RETURN $bEnabled
END
SUB Enabled_Write(bEnabled AS Boolean)
$bEnabled = bEnabled
UpdateEverything
END
' Implementa la proprietà Handle
FUNCTION Handle_Read() AS Integer
RETURN $iHandle
END
Sinonimo di Propietà
PROPERTY [ READ ] Identifier [ , Synonymous1 [ , Synonymous2 ... ] ] AS Datatype
Dal 3.1
Usando la seconda sintassi è possibile dichiarare fino a un massimo di tre sinonimi per la dichiarazione della proprietà.
Property shortcut
PROPERTY [ READ ] Identifier AS Datatype USE Variable
Dal 3.14
Questa sintassi dichiara una variabile privata globale
Variable che verrà utilizzata per l'implementazione della proprietà
Identifier.
Property Name As String Use $sName
è un equivalente esatto di:
Property Name As String
Private $sName As String
Private Sub Name_Read() As String
Return $sName
End
Private Sub Name_Write(Value As String)
$sName = Value
End
Se necessario, è possibile riscrivere
Read
o
Write
o entrambi i metodi di proprietà predefiniti:
Property Name As String Use $sName
Private Sub Name_Write(Value As String)
If Not Value Then Error.Raise("Incorrect name")
$sName = Value
End
Vedi anche