Руководство по actionscript. часть 1, стр. 083
Для описания get-метода используется следующий обобщенный синтаксис:
function get имяМетода ( ) { операторы
}
Здесь ключевое слово get указывает на то, что метод является get-методом, имя-Метода представляет имя метода, а операторы — это ноль или более операторов, выполняемых при вызове метода (ожидается, что один из операторов возвращает значение, связанное с методом имяМетода).
Для описания set-метода используется следующий обобщенный синтаксис:
function set имяМетода (новоеЗначение) { операторы
}
Здесь ключевое слово set указывает на то, что метод является set-методом, имяМетода представляет имя метода, параметр новоеЗначение содержит значение, присваиваемое
внутренней переменной экземпляра, а операторы — это ноль или более операторов, выполняемых при вызове метода. Ожидается, что блок операторов операторы определит и внутренне сохранит значение, связанное с методом имяМетода. Обратите внимание, что в теле set-метода оператор return не должен применяться для возврата значения (однако сам по себе он может быть использован для завершения метода). Set-методы автоматически возвращают значение, что рассматривается далее.
Для вызова get — и set-методов применяется уникальный стиль, не требующий использования оператора вызова функции ( ). Get-метод х ( ) объекта ob j вызывается следующим образом:
obj. x:
Но не так:
obj. xC ):
Set-метод у ( ) объекта ob j вызывается следующим образом: obj. y = value: Но не так:
obj. y(value):
Здесь value является первым (и единственным) аргументом, передаваемым в метод у ( ).
Следовательно, get — и set-методы неким магическим образом позволяют преобразовать синтаксис обращения к переменным экземпляра в вызовы методов. В качестве примера (временно) добавим get-метод с именем name ( ) в наш класс
VirtualPet:
public function get name ( ) { return petName;
}
Теперь, когда в классе определен get-метод name ( ), все попытки получить значение переменной экземпляра name на самом деле приведут к вызову этого get-метода. Возвращаемое значение get-метода выглядит так, будто на самом деле было получено значение переменной name. Например, следующий код вызывает get-метод name ( ) и присваивает его возвращаемое значение переменной oldName:
var oldName = pet. name;
Сейчас (временно) добавим set-метод с именем name ( ) в наш класс Vi rtual Pet:
public function set name (newName) { // Если длина заданного нового имени больше 20 символов… if (newName. length > 20) {
// …обрезать имя
newName = newName. substr(0. 20): } else if (newName == «») {
// …в противном случае, если заданное новое имя является
// пустой строкой, завершить выполнение метода, не изменяя
// значения переменной petName
return;
// Присвоить новое проверенное имя переменной petName petName = newName;
}
Теперь, когда в классе определен set-метод name ( ), попытки присвоить значение переменной экземпляра name приведут к вызову данного set-метода. Значение, используемое в операторе присваивания переменной name, передается в set-метод, который внутренне сохраняет это значение в закрытой переменной petName. Например, следующий код вызывает set-метод name ( ), который внутренне сохраняет значение 11 Andreas» в переменной petName: