Istruzione function get
Aggiornamento: novembre 2007
Consente di dichiarare le funzioni di accesso per una nuova proprietà in una classe o in un'interfaccia. Spesso function get viene utilizzata in combinazione a un'istruzione function set per consentire l'accesso in lettura/scrittura a una proprietà.
// Syntax for the get accessor for a property in a class.
[modifiers] function get propertyname() [: type] {
[body]
}
// Syntax for the get accessor for a property in an interface.
[modifiers] function get propertyname() [: type]
Argomenti
modifiers
Facoltativo. Modificatori che controllano la visibilità e il comportamento della proprietà.propertyname
Obbligatorio. Nome della proprietà da creare. Questo argomento deve essere univoco all'interno della classe. Tuttavia, uno stesso propertyname può essere utilizzato con entrambe le funzioni di accesso get e set per identificare una proprietà da cui è possibile leggere e in cui è possibile scrivere.type
Facoltativo. Restituisce il tipo della funzione di accesso get. Deve corrispondere al tipo di parametro della funzione di accesso set, se definita.body
Facoltativo. Una o più istruzioni che consentono di definire il modo di operare della funzione di accesso get.
Note
Le modalità di accesso alle proprietà di un oggetto sono analoghe alle modalità di accesso a un campo, con la differenza che le proprietà consentono un controllo maggiore sui valori memorizzati in un oggetto e da esso restituiti. Le proprietà possono essere di sola lettura, di sola scrittura o di lettura/scrittura a seconda della combinazione delle funzioni di accesso alle proprietà get e set definite nella classe. Le proprietà vengono spesso utilizzate per garantire che nel campo private o protected vengano memorizzati solo valori appropriati. Non è possibile assegnare un valore a una proprietà di sola lettura o leggere una valore da una proprietà di sola scrittura.
Una funzione di accesso get, che deve specificare un tipo restituito, non dispone di argomenti. Può essere accoppiata a una funzione di accesso set, che dispone di un solo argomento ma non di un tipo restituito. Se per la proprietà vengono utilizzate entrambe le funzioni di accesso, il tipo restituito della funzione di accesso get deve corrispondere al tipo di argomento della funzione di accesso set.
Per una proprietà è possibile specificare una delle funzioni di accesso get o set oppure entrambe. Solo alla funzione di accesso get (o set, se get non è presente) di una proprietà possono essere assegnati attributi personalizzati che hanno effetto sulla proprietà nel suo complesso. Sia a get che a set possono essere assegnati modificatori e attributi personalizzati che hanno effetto sulla sola funzione di accesso. Le funzioni di accesso alle proprietà non possono essere sottoposte a overload. Possono invece essere nascoste o sottoposte a override.
È possibile specificare proprietà nella definizione di un'interfaccia, mentre non è possibile fornire alcuna implementazione nell'interfaccia.
Esempio
Nell'esempio seguente vengono illustrate varie dichiarazioni di proprietà. Viene definita una proprietà Age di lettura/scrittura. Viene inoltre definita una proprietà FavoriteColor di sola lettura.
class CPerson {
// These variables are not accessible from outside the class.
private var privateAge : int;
private var privateFavoriteColor : String;
// Set the initial favorite color with the constructor.
function CPerson(inputFavoriteColor : String) {
privateAge = 0;
privateFavoriteColor = inputFavoriteColor;
}
// Define an accessor to get the age.
function get Age() : int {
return privateAge;
}
// Define an accessor to set the age, since ages change.
function set Age(inputAge : int) {
privateAge = inputAge;
}
// Define an accessor to get the favorite color.
function get FavoriteColor() : String {
return privateFavoriteColor;
}
// No accessor to set the favorite color, making it read only.
// This assumes that favorite colors never change.
}
var chris: CPerson = new CPerson("red");
// Set Chris age.
chris.Age = 27;
// Read chris age.
print("Chris is " + chris.Age + " years old.");
// FavoriteColor can be read from, but not written to.
print("Favorite color is " + chris.FavoriteColor + ".");
Una volta eseguito, il programma restituirà il seguente output:
Chrisis 27 years old.
Favorite color is red.