Руководство по actionscript. часть 1, стр. 141
Выражение as тип
В приведенном коде выражение представляет любое выражение, а тип — любой класс или интерфейс (тип не должен принимать значения undefined или null). Оператор as возвращает значение выражения выражение, если указанное выражение принадлежит указанному типу тип, в противном случае возвращается значение null.
Например, в следующем коде результат выражения (meal as Apple) идентичен результату операции приведения типов Apple (meal):
var meal:Food = new Apple( ); (meal as Apple).hasWorm( );
В следующем коде оператор as используется для «приведения» объекта Array к типу данных Array с тем, чтобы данный объект можно было присвоить переменной типа Array.
public function output (msg:Object):void { if (msg is String) { trace(msg);
}
if (msg is Array) { var arr:Array = msg as Array: // Приведение к типу Array
trace(arr. join(«\n»));
Следующий код демонстрирует результат передачи тестового объекта Array в метод output ( ):
var numbers:Array = [1,2,3] output(numbers):
// Вывод:
1
2
3
Преобразование в примитивные типы
В предыдущем разделе рассказывалось, что если выражение приводится к примитивному типу, к которому оно не принадлежит, то его значение будет преобразовано в указанный тип. Например, рассмотрим следующий код, который выполняет приведение объекта Date к примитивному типу данных Boolean:
Boolean(new Date( ))
Поскольку тип данных Boolean является примитивным типом, а объект Date не принадлежит типу Boolean, среда выполнения Flash преобразует значение объекта Date в тип Boolean. Результатом данного преобразования будет являться значение true типа Boolean.
Операции приведения типов иногда используются не для того, чтобы сообщить компилятору тип заданного выражения, а для того, чтобы преобразовать значение этого выражения в примитивный тип данных.
I Операция приведения типов может преобразовать любое значение в конкретный при-
ч?’ 4 , митивный тип.
_ Щ’-
Например, следующий код преобразует число с плавающей точкой (с дробной частью) в целое число (без дробной части):
int(4.93)
Результатом этой операции приведения типов является целое число 4. Подобным образом следующий код преобразует значение true типа Boolean в целое число 1, а значение false типа Boolean — в целое число 0:
int(true): // Возвращает 1 int(false); // Возвращает О
Такая методика может применяться для уменьшения размера передаваемых на сервер данных, включающих ряд значений типа Boolean.
В табл. 8.1 представлены результаты преобразования различных типов данных в тип Number.
Таблица 8.1. Преобразование в тип Number
Исходные данные Результат после преобразования
undefined NaN (специальное числовое значение «Не число» (Not a Number), представляющее некорректные числовые данные)
Исходные данные Результат после преобразования
null 0
int То же число
uint То же число
Boolean 1, если исходным значением является true; 0# если исходным значением является false
Numeric в строковом представлении Эквивалентное числовое значение, если строка состоит только из цифр десятичной или шестнадцатеричной систем счислений, пробела, экспоненты, десятичной точки, знаков + или — (например, строка («-L485e2″) превратится в число -148.5)
Пустая строка 0
«Бесконечность» Infinity
«Минус бесконечность» — Infinity
Другие строки NaN
Объект NaN
В табл. 8.2 представлены результаты преобразования различных типов данных в тип int.
Таблица 8.2. Преобразование к типу int
Исходные данные Результат после преобразования
undefined 0
null 0
Number или uint Целое число в диапазоне от -231 до 231-1; значения, превышающие диапазон представления, включаются в указанный диапазон с помощью алгоритма, описанного в разд. 9.5 третьей редакции стандарта ЕСМА-262
Boolean 1, если исходным значением является true; 0, если исходным значением является false
Numeric в строковом представлении Эквивалентное числовое значение, преобразованное в целочисленный знаковый формат
Пустая строка 0
«Бесконечность» 0
«Минус бесконечность» 0
Другие строки 0
Объект 0
В табл. 8.3 представлены результаты преобразования различных типов данных в тип uint.
Таблица 8.3. Преобразование в тип uint
Исходные данные Результат после преобразования
undefined 0
null 0
Number или int Целое число в диапазоне от 0 до 231-1; значения, превышающие диапазон представления, включаются в указанный диапазон с помощью алгоритма, описанного в разд. 9.6 третьей редакции стандарта ЕСМА-262
Продолжение ^
196 Глава 8. Типы данных и проверка типов
Таблица 8.3 (иродо. г/ксммс)
Исходные данные Результат после преобразования
Boolean 1, если исходным значением является true; 0, если исходным значением является false
Numeric в строковом представлении Эквивалентное числовое значение, преобразованное в целочисленный беззнаковый формат
Пустая строка 0
«Бесконечность» 0
«Минус бесконечность» 0
Другие строки 0
Объект 0
В табл. 8.4 представлены результаты преобразования различных типов данных в тип String.
Таблица 8.4. Преобразование в тип String
Исходные данные Результат после преобразования
undefined «undefined»
null «null»
Boolean «true», если исходным значением является true; «false», если исходным значением является false
NaN «NaN»
0 «0″
«Бесконечность» «Infinity»
«Минус бесконечность» «-Infinity»
Другое числовое значение Строковое представление указанного числа. Например, число 944.345 превратится в строку «944.345″
Объект Значение, полученное в результате вызова метода toString() над объектом. По умолчанию метод объекта toString() возвращает строку «[object имяКласса]«, где имяКласса представляет класс объекта. Метод toString() может быть переопределен для получения более полезной информации. Например, метод toString() объекта Date возвращает время в удобочитаемом формате наподобие «Sun May 14 11:38:10 EDT 2000″, а метод toString() объекта Array возвращает список элементов массива, разделенных запятыми
В табл. 8.5 представлены результаты преобразования различных типов данных в тип Boolean.
Таблица 8.5. Преобразование в тип Boolean
Исходные данные Результат после преобразования
undefined false
null false
NaN false
0 false
Infinity true
-Infinity true
Другое числовое значение true
Непустая строка true
Исходные данные Результат после преобразования
Пустая строка («») false
Объект true
Значения переменных по умолчанию
Когда переменная объявлена без аннотации типа и без указания исходного значения, в качестве исходного значения этой переменной автоматически присваивается значение undefined (единственное значение типа данных void). Когда переменная объявлена с аннотацией типа, но без указания исходного значения, в качестве ее исходного значения автоматически присваивается значение по умолчанию, соответствующее указанному типу данных.