Показать сообщение отдельно
Старый 25.10.2006, 12:00
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 65  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию 71. Двойное объявление переменной

В ActionScript 1 и 2 можно было объявить одну переменную дважды в одной области видимости и это не вызывало ошибки. Например:
Код:
// ActionScript 1 и 2  
var i:Number = 1;
var i:String = 2;
В ActionScript 3 так нельзя. Вы можете только один раз объявить переменную в одной области видимости. Так же нельзя изменить тип переменной.
Код:
// ActionScript 3  
var i:Number = 1;
var i:String = 2; // ERROR: duplicate definition or undefined property
В ситуации, где переменная используется в разных блоках for или if, вы должны объявить ее до блока:
Код:
// Это НЕВЕРНО для ActionScript 3 
// (но работает в AS1 и AS2)
if (my_btn.enabled == true) {
    var returnValue:Number = 1;
}else{
    var returnValue:Number = 0;
}
if (provideAsString == true) {
    var returnValue:String = "1";
}else{
    var returnValue:String = "0";
}
Правильно для AS3 в данной ситуации будет так:
Код:
// ПРАВИЛЬНО для ActionScript 3 
var returnValueNum:Number;
var returnValueStr:String;
if (my_btn.enabled == true) {
    returnValueNum = 1;
}else{
    returnValueNum = 0;
}
if (provideAsString == true) {
    returnValueStr = "1";
}else{
    returnValueStr = "0";
}
Если же неприемлемо использование двух переменных и обязательно должна быть одна, которая должна принимать как числовое значение так и строку, нужно использовать универсальный тип переменных *
Код:
// Также ПРАВИЛЬНО для ActionScript 3 
var returnValue:*;
if (my_btn.enabled == true) {
    returnValue = 1;
}else{
    returnValue = 0;
}
if (provideAsString == true) {
    returnValue = "1";
}else{
    returnValue = "0";
}
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.