Типы данных ActionScript

На этом уроке по ActionScript мы рассмотрим 5 вопросов:

  1. Типы данных. Общая информация
  2. О типах данных в ActionScript
  3. Декларация типов данных
  4. Нетипизированные данные
  5. Изменение типа данных

ActionScript 3 – это язык программирования, который требует обязательной записи типа данных ActionScript при создании переменных. Это значит, что он распознает какой тип данных присвоен переменной и Вы должны следовать этому подходу, программируя на этом языке.


Типы данных. Общая информация

Языки программирования, базы данных и другие компьютерные программы должны различать типы данных с которыми они работают. Если тип данных не определен программой, то в таком случае компьютер обычно делает ошибку (в работе с AS3 наиболее часто используемый способ проверки — метод trace ActionScript). Например, если у Вас на компьютере установлена операционная система Microsoft Windows, и Вы сохранили серию файлов с именами начинающимися с цифры, то они будут отсортированы некорректно. После файла с именем 1.png последует 10.png, а не 2.png. Это происходит потому, что Windows воспринимает имена файлов не как цифры, а как буквы. Т.е. имена файлов по своему типу являются строками, а не числами. В этом случае каждая буква и цифра (которая в данном случае не является числом!) имеет свой номер в общем ряду всех букв и цифр. Поэтому все имена файлов, начинающиеся с 1 (1, 11, 15, 124, 10345 и т.д.) всегда будут показываться раньше чем файлы начинающиеся с цифры 2.

Подобные проблемы могут быть легко решены при помощи типов данных. Если мы можем сообщить программе, что определенная часть кода по своему типу является числом, то и программа будет обрабатывать его соответствующим образом: сортировать, производить необходимые математические операции и пр.

О типах данных в ActionScript

Основные типы данных Actionscript

Существует 3 основных типа данных ActionScript: Null, void и Object.

Null (ноль) может иметь единственное значение – отсутствие значения. Это означает, что у переменной нет значения. При этом, заметьте, что null – это не 0 и не пустая строка, т.к. последние имеют определенное значение.

Подобно типу данных Null, void (неопределенный) имеет единственное значение: undefined (значение не определено). Чаще всего Вы будете встречаться с данным типом, работая с функциями, которые не возвращают никакого значения. Мы обсудим этот вопрос в деталях в соответствующем уроке.

Тип данных Object (объект) включает в себя все экземпляры всех классов, в том числе и уже встроенных в ActionScript. Во время наших уроков Вы увидите множество примеров когда будут создаваться экземпляры именно таких объектов.

В дополнение к вышеперечисленным основным типам данных Actionscript, распознается как тип данных любой класс, как изначально встроенный в него, так и созданный Вами. Поэтому, как будет показано далее, Вы можете присваивать переменным такие типы данных как String, Number, Array и т.д. Это в свою очередь означает, Вы создаете переменные, являющиеся экземплярами классов String, Number и Array соответственно.

Простые типы данных

Переменной может быть присвоен простой тип данных. В AS3 (ActionScript 3) – это String (строка), Boolean (булевый тип), Number (число), int (целое число) и uint (положительное целое число).

Строки (strings) – это буквы, слова, предложения, куски текста, которые могут содержать в себе как буквы так и цифры и пробелы. Строки всегда беруться в кавычки! Это их особенность и отличие от других типов данных при записи. Как объединять строки будет рассказано в отдельном уроке «Объединение (конкатенация) строк».

Булевый тип данный (boolean) назван так в честь физика Джоржа Буля. Переменной такого типа может быть присвоено только два значения: либо true (1) либо false (0). Как и в других языках программирования в ActionScript значение true будет соответствовать любому числу отличному от нуля, любой непустой строке.

Тип данных Number для работы с любыми числовыми значениями (не строками!). Он содержит в себе 2 подтипа: int (integer) – целое число, которое может как положительным так и отрицательным, и uint (unsigned integer) – только положительное целое число, 0 включительно.

Сложные типы данных

Иногда Вам будет необходимо сохранить в переменной несколько значений, т.е. не одно. Это можно сделать с помощью сложных типов данных. Один из примеров такого типа – Array (массив), работу с которым мы рассмотрим в серии уроков «Создание массива ActionScript», «Добавление и удаление элементов в массив ActionScript» и др.

Декларация типа данных

Назначение типа данных ActionScript переменной происходит во время декларации этой переменной. После имени переменной Вы ставите двоеточие и сразу после пишите тип данных. В большинстве случаев в АctionScript (но не всегда) типом данных будет являться какой-либо класс и поэтому его имя должно начинаться с заглавной буквы. Например, Вы решили создать переменную myName и присвоить ей тип данных String. В результате у Вас должно получиться следующее:

Нетипизированные данные

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

Однако, поступая так Вы можете оставить других программистов, которые возможно будут работать с Вашим кодом, в недоумении: сделали ли Вы это умышленно или это ошибка. Поэтому, если Вы действительно хотите не присваивать переменной никакой тип, то Вы должны записать это с помощью звездочки * (астериск). Например:

Оба примера вверху будут работать одинаково. Здесь еще раз хотелось бы напомнить, что нетипизированные данные должны использоваться только когда это абсолютно необходимо!

Переменнные, которым присвоен определенный тип данных должны содержать в себе только данные этого типа. Поэтому если Вы будете следовать этому правилу, в дальнейшем Вам будет легко избежать ошибок в коде и исправлять их если таковые возникнут. Каждый раз Вы будете получать сообщение об ошибке с указание номера строки, что очень легко исправить. Если же какая-либо переменная нетипизирована, то сообщения не поступит, но программа работать не будет. Найти где ошибка будет очень сложно.

Изменение типа данных

Если Вам нужно изменить тип данных Actionscript переменной, то это можно сделать с помощью метода называемого кастингом (casting). Вы просто записываете новый тип данных, а затем в скобках имя переменной. Например:

В этом примере переменной myName назначен тип данных String и присвоено значение Valeriy. Затем мы меняем её тип на Boolean.

Здесь важно отметить, что подобная операция по смене типа данных ActionScript не всегда бывает успешна. В показанном выше примере проблем с обработкой кода не будет. Теперь значение переменной myName будет соответствовать true. Мы уже знаем, что любая непустая строка будет приравниваться к true когда речь идет о булевом типе (boolean). Однако, следующий пример проиллюстрирует нам определенные трудности которые иногда возникают во время кастинга.

После этой операции значение переменной myName будет равно NaN (Not a Number) – не число! Т.е. совсем не то, что мы ожидали. Это произошло потому, что строка, состоящая из букв не может быть преобразована в число. Обратная же операция возможна, потому что строки могут содержать в себе числа.


Типы данных ActionScript: 14 комментариев

  1. не работает во Flash CS5 почему-то casting… :/ ____________________________ var myName:String = “Valeriy”; Boolean(myName); trace (myName); _________________________________ выводит Valeriy, а по-видимому должны быть TRUE или я не правильно понял… :\

      1. Это потому, что ты не верно записываешь. И вообще лишние строки пишешь. У тебя тут свойство Boolean получает параметр, это правильно, но когда ты делаешь вывод, ты в параметр trace вставляешь переменную, которой присвоено строковое свойство. Другими словами, толку от того, что в параметре свойства Boolean ты указал переменную – ноль, потому что присвоения нет. Выводить нужно так: var imya:String = “имя”; trace (Boolean(imya)); Таким образом, ты выводишь свойство параметр которого есть переменная.

  2. Судя по всему это не меняет тип переменной, это простое приведение типов. Вот такой код работает: var myName:String = “Snay”; trace (Boolean(myName));

  3. Подскажите как запускать код чтобы проверить что именно получается в итоге…

  4. обьясните пожалуйста почему, когда меняем тип на Boolean AS3 присваевает значение true (1). А главное: ” Как и в других языках программирования в ActionScript значение true будет соответствовать любому числу отличному от нуля, любой непустой строке” какой именно непустой строке будет соответствовать это значение? будет оно 1 или каким другим числом? и можно ли самому выбрать строку для определения значения?

    1. непустая строка это любая строка которая содержит хотя бы один символ… var notEmptyStr:String = “Hello World!”; – непустая строка… var emptyStr:String = “”; – пустая строка, которая всегда при переводе в булеву переменную будет иметь значение false, любые другие строки будут иметь значение true… то же самое с числами… var emptyNumber:Number = “0”; – всегда false, все остальные всегда true…

  5. А как же такой тип данных как uint Как пример преобразование отрицательно числа в положительное var a:Number = -10 trace(uint(a)); Выведет 10.

  6. А как перевести значение переменной, полученное из поля ввода INPUT TEXT? Перевести текст, введенный пользователем в виде цифер в число?

    1. Не знаю как насчет AS3 но в Java для этого есть встроенные классы. Например: String myNumb = “12”; //Строка myNumb содержит символы 1 и 2. int number = Integer.parsint(myNumb); //теперь переменная number содержит, именно целое число, 12. Уверен, что и в AS3 есть классы для работы как с примитивными так и ссылочными типами данных, помимо casting. Нужно поискать в документации Adobe, потому как предугадать все сразу не возможно, даже используя регулярные выражения ( в случае с логином пользователя и его паролем) .

      1. как и говорилось выше – такие методы как я описал есть и в AS3. Привожу их ниже: Получить из строки число можно так же с помощью глобальных функций parseInt(…) и parseFloat(…): var str:String = “23.7”; var myNum1:Number = parseInt(str); trace(myNum1); // 23 var myNum2:Number = parseFloat(str); trace(myNum2); // 23.7

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *