Подтвердить что ты не робот

Почему ActionScript не имеет "generics"?

Может ли кто-нибудь сказать мне, почему ActionScript 3, статически типизированный язык, не имеет дженериков? Это слишком много работы? Историческая вещь? Есть ли способ "подделать" его, которого я еще не взял?

Редактировать: спасибо за ответы! Класс Vector - это в основном то, что я искал, и другая информация тоже была полезна.

4b9b3361

Ответ 1

Новый Vector class - это форма дженериков, которую ActionScript 3 теперь поддерживает при компиляции для Flash Player 10. Они не поддерживают спецификацию ваших собственных родовых классов.

Я думаю, что Adobe в конечном итоге внедрит стандарт ES4. Было бы неплохо, если бы у них был конкурент, который мог бы ускорить их движение в правильном направлении. Я ожидал немного больше от обновлений до AS3, когда они переместились в CS4, но я полагаю, что для класса Vector будет достаточно.

Похоже, они потратили много времени на сбор библиотек для Flex и AIR, поэтому, возможно, они вернутся к улучшению языковой поддержки позже, но, вероятно, это не настоящий приоритет. Помните, что Adobe находится в этом за деньги, а не за то, что они чувствуют себя хорошо, чтобы сделать максимально возможный язык.

Ответ 2

Я считаю, что это историческая вещь. ActionScript основан на ECMAScript ( JavaScript также основан на ECMAScript). ECMAScript - это динамически типизированный язык, что означает, что переменные не имеют объявленного типа. Дженерики более полезны для статически типизированных языков, где тип переменной объявляется заранее. На статически типизированном языке, без дженериков, вы все время запираетесь от корневого объекта (например, Object в Java). Это не проблема в ECMAScript, потому что вы можете поместить все, что хотите, в любую структуру данных.

Итак, почему ActionScript не добавил дженерики, когда они добавили статическую типизацию в ECMAScript? Я не могу быть уверен в этом, но я думаю, что предпосылка вашего вопроса немного неактивна - существуют контейнеры с универсальным esque, такие как Vector. Я мог бы подумать, что они сохранили бы динамически типизированные контейнеры ECMAScript (объекты и массивы) для обратной совместимости, но они уже нарушили между AS2 и AS3, поэтому я не уверен.

Ответ 3

Параметрические типы (слово "generics" обычно используется в ECMAScript для общих методов, а не комбинации параметрических типов и полиморфизма времени выполнения используемые в Java) были предложены как часть ES4, но ES4 сломался и большая часть системы типов, предложенной для ES (включая части, реализованные в ActionScript ) не попадают в следующую версию. Я не могу сказать, захочет ли Adobe самостоятельно идти этим путем.

Ответ 4

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

as3 не очень отличается от javascript, кстати, поэтому ваш вопрос будет относиться и к JS.