Istruzione function set
Aggiornamento: novembre 2007
Consente di dichiarare le funzioni di accesso per una nuova proprietà in una classe o in un'interfaccia. Spesso function set viene utilizzata in combinazione a un'istruzione function get per consentire l'accesso in lettura/scrittura a una proprietà.
// Syntax for the set accessor of a property in a class.
[modifiers] function set propertyname(parameter [: type]) {
[body]
}
// Syntax for the set accessor of a property in an interface.
[modifiers] function set propertyname(parameter [: 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.parameter
Obbligatorio. Parametro formale accettato dalla funzione di accesso set.type
Facoltativo. Tipo di parametro della funzione di accesso set. Deve corrispondere al tipo restituito della funzione di accesso get, se definita.body
Facoltativo. Una o più istruzioni che definiscono il modo di operare della funzione di accesso set.
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 set deve avere un singolo argomento e non deve specificare alcun tipo restituito. Può essere accoppiata a una funzione di accesso get, che non dispone di argomenti ma deve specificare 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'interface.
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's age.
chris.Age = 27;
// Read Chris's 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:
Chris is 27 years old.
Favorite color is red.