Оператор function set
Объявляет методы доступа для нового свойства в классе или интерфейсе. Оператор function set часто используется в сочетании с оператором function get, чтобы обеспечить доступ к свойству для чтения и записи.
// 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])
Аргументы
modifiers
Необязательный. Модификаторы, которые управляют видимостью и поведением свойства.propertyname
Обязательный. Имя создаваемого свойства. Должно быть уникальным в классе, однако в методах доступа get и set может использоваться одно имя propertyname для указания свойства, значение которого должно считываться и записываться.parameter
Обязательный. Формальный параметр, принимаемый методом доступа set.type
Необязательный. Тип параметра метода доступа set. Это значение должно совпадать с типом возвращаемых данных метода get (если этот тип определен).body
Необязательный. Один или несколько операторов, определяющих поведение метода доступа set.
Заметки
Доступ к свойствам объекта осуществляется практически тем же способом, каким выполняется доступ к полям, однако свойства предоставляют больше возможностей управления значениями, которые сохраняются и извлекаются в объекте. В зависимости от сочетания методов доступа к свойствам get и set, определенных в классе, свойства могут быть доступны только для чтения, только для записи или одновременно для чтения и записи. Свойства часто используются в тех случаях, когда необходимо обеспечить, чтобы в полях с модификаторами private или protected сохранялись только допустимые значения. Невозможно назначить значение свойству, предназначенному только для чтения, или считать значение свойства, предназначенного только для записи.
Метод доступа set должен иметь ровно один аргумент, и для него нельзя определить тип возвращаемых данных. Метод доступа set можно использовать в сочетании с методом доступа get, который не должен иметь аргументов. Тип возвращаемых данных для метода "get" должен быть определен. Если для свойства используются оба метода доступа, то тип возвращаемых данных метода get должен совпадать с типом аргумента метода set.
Для свойства может быть задан метод доступа get или set. Можно также указать оба метода. Пользовательские атрибуты, которые применяются к свойству в целом, может иметь только метод доступа get (или метод доступа set, если метод get не определяется). И метод get, и метод set могут иметь модификаторы и пользовательские атрибуты, которые применяются к отдельному методу доступа. Методы доступа к свойству нельзя перегружать, однако их можно скрыть или переопределить.
Свойства можно указывать в определении interface, однако в интерфейсе нельзя предоставить реализацию свойства.
Пример
В следующем примере демонстрируется несколько объявлений свойств. Свойство Age определено как доступное и для чтения, и для записи. Определено также свойство FavoriteColor, доступное только для чтения.
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 + ".");
При выполнении этой программы выводится следующий текст:
Chris is 27 years old.
Favorite color is red.