Присваивание одной переменной значения 

другой переменной  ActionScript 

 

 

В процессе написания кода программы мы остановились на создании  

метода-конструктора для класса Virtual Pet. Метод-конструктор описывает единственный 

параметр name, значение которого определяется во внешнем коде, отвечающем за 

создание объекта в классе Virtual Zoo. Ниже представлен исходный код классов 

VirtualPetnVirtualZoo, включающий в себя все произведенные ранее  

изменения: 

// Класс Virtual Pet 

package zoo { 

internal class Virtual Pet { 

internal var petName = "Unnamed Pet"; 

public function Virtual Pet (name) { 

// Класс Virtual Zoo 

package zoo { 

public class VirtualZoo { 

public function VirtualZoo ( ) { 

var pet = new VirtualPetCStan"); 

Теперь, после того как мы ознакомились с процессом применения переменных 

в выражениях, параметр name может быть использован для присвоения значения 

Stan переменной экземпляра petName нового объекта VirtualPet. 

Как нам уже известно, чтобы присвоить новое значение переменной экземпляра, 

используется следующий обобщенный код: 

объект.переменнаяЭкземпляра = значение 

63 
В соответствии с этим кодом, чтобы присвоить значение переменной, сначала  
необходимо указать объект. В данном случае таким объектом является создаваемый 
экземпляр класса VirtualPet. Для обращения к нему используется ключевое 
слово this — автоматически передаваемый параметр, значением которого  
является создаваемый объект. 
После ключевого слова this ставится точка, а затем указывается имя  
переменной экземпляра, которой необходимо присвоить значение, — в данном случае 
petName. 
this.petName 
После чего ставится знак равенства и указывается значение, которое должно быть 
присвоено переменной экземпляра: 
this.petName = value 
В нашем случае присваиваемым значением является значение параметра name. 
Таким образом, вместо слова value просто подставляется имя параметра name: 
this.petName = name 
На этапе выполнения среда Flash (в которой выполняется программа) заменит 
параметр name из предыдущего кода значением, переданным конструктору класса 
VirtualPet. Это значение впоследствии будет присвоено переменной экземпляра 
petName. 
Код класса VirtualPet с внесенными изменениями выглядит следующим  
образом: 
package zoo { 
internal class VirtualPet { 
internal var petName = "Unnamed Pet"; 
public function VirtualPet (name) { 
this.petName = name; 
Теперь, когда значение переменной экземпляра petName присваивается в  
конструкторе класса VirtualPet, ненужное исходное значение Unnamed Pet, 
указанное в описании переменной petName, может быть удалено. Описание  
переменной petName до настоящего момента выглядело следующим образом: 
internal var petName = "Unnamed Pet"; 
После изменений описание этой переменной примет следующий вид (обратите 
внимание на отсутствие инициализатора переменной): 
package zoo { 
internal class VirtualPet { 
internal var petName; 
Глава 1. Основные понятия 
public function VirtualPet (name) { 
this.petName = name; 
Копии и ссылки. В предыдущем разделе был описан процесс присваивания  
значения одной переменной другой. В частности, переменной экземпляра pet Name 
было присвоено значение параметра name. Вот этот код: 
this.petName = name; 
Результат присваивания значения одной переменной другой зависит от типа  
присваиваемого значения. 
В случаях, когда значением переменной-источника в выражении присваивания 
является экземпляр класса String, Boolean, Number, int или uint, среда  
выполнения создает копию этого значения и присваивает созданную копию целевой 
переменной. После окончания процедуры присваивания в системной памяти  
образуются две независимые версии исходного значения — само исходное значение 
и его копия. Переменная-источник указывает, или ссылается, на первоначальное 
значение в памяти. Целевая переменная ссылается на новое значение в памяти. 
В других случаях, когда значением переменной-источника в выражении  
присваивания выступает экземпляр пользовательского класса или экземпляр  
предопределенного класса языка ActionScript, за исключением классов String, Boolean, 
Number, int или uint, программа связывает вторую переменную непосредственно 
со значением первой. После присваивания в памяти будет существовать только 
одна копия значения, на которую будут ссылаться обе переменные. В подобной 
ситуации говорят, что переменные совместно используют ссылку на один объект 
в памяти. Очевидно, что изменения, вносимые в объект через первую переменную, 
будут доступны и для второй переменной. Например, рассмотрим код, в котором 
создаются две локальные переменные — а и Ь, после чего значение переменной 
а присваивается переменной Ь. 
var a = new Virtual Pet("Stan"); 
var b = a; 
В процессе выполнения первой строки приведенного выше кода средой Flash  
будет создан новый объект класса VirtualPet, после этого он будет записан в  
память и связан с локальной переменной а. В результате выполнения второй строки 
кода объект VirtualPet, на который уже ссылается переменная а, будет связан 
с локальной переменной Ь. Изменения, вносимые в объект VirtualPet через 
переменную а, будут естественным образом отражаться на переменной Ь, и  
наоборот. Например, если переменной экземпляра petName присвоить новое  
значение, используя код b. petName = "Tom", а затем обратиться к этой переменной 
с помощью конструкции a .petName, то будет получено то же значение — Тот. 
Или, если переменной экземпляра petName присвоить значение, используя код 
а. petName = "Ken", а затем обратиться к данной переменной с помощью  
конструкции b. petName, будет получено то же значение — Ken. 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям