ActionScript - Тип данных по умолчанию для нетипизированных переменных? - PullRequest
2 голосов
/ 17 сентября 2010

если я не введу переменную в моем коде, будет ли она скомпилирована как тип данных по умолчанию?например, функция «для каждого ... в» лучше всего работает без ввода переменной:

for each (var element in myArray)
         {
         //process each element
         }

имеет ли моя переменная element тип данных?если он напечатан как Object, то лучше на самом деле написать element: Object или это имеет значение?

EDIT

на самом деле, это былоПлохой пример, поскольку переменная элемента будет напечатана для любого элемента в myArray.

но так ли это, если переменная не типизирована?это просто станет тем, что ему передают?

вот лучший пример для моего вопроса:

var a = "i'm a string"; //does this var becomes a String?

var b = 50.98; //does this var becomes a Number?

var c = 2; //does this var becomes an int?

1 Ответ

3 голосов
/ 17 сентября 2010

for each (var element in myArray)

Переменная element не имеет какого-либо типа данных - она ​​не типизирована и поэтому может содержать что угодно.

И да, это эквивалентно написанию element:Object или element:*, но всегда желательно вводить переменные - это поможет вам обнаружить некоторые ошибки перед запуском кода. Компилятор mxmlc выдаст предупреждение, если вы этого не сделаете, что можно исправить, набрав его как e:Object или e:*.


var a = 45.3;  //untyped variable `a`
a = "asd";     //can hold anything

/*
    This is fine:  currently variable `a` contains 
    a String object, which does have a `charAt` function.
*/
trace(a.charAt(1));

a = 23;
/*
    Run time error: currently variable `a` contains 
    a Number, which doesn't have a `charAt` function.
    If you had specified the type of variable `a` when 
    you declared it, this would have been 
    detected at the time of compilation itself.
*/
trace(a.charAt(1)); //run time error


var b:Number = 45.3; 
b = "asd"; //compiler error
trace(a.charAt(1)); //compiler error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...