Pull to refresh

Хорошие новости! Встречаем язык для коллекций ActionScript

Reading time2 min
Views1.2K
Кто работает много с массивами и векторами (а это думаю почти все разработчики), порадуются новым возможностям: в Realaxy ActionScript Editor появилась поддержка Collections Language.

image

В свете того, что в будущем RASE научится выгонять AS3 в js/cpp/php/android/ios, этот языковой сахар полюбят и другие девелоперы.

Итак, язык для коллекций.

Весь список методов и возможностей на примерах тестов можно поглядеть тут и тут.

В этой статье коротко опишем несколько типичных примеров работы.

image

Первый пример показывает краткость. Первая часть до комментария написана на collections language.Допустим, мы хотим создать лист (list), который может содержать только тип int, выбрать из него только те элементы, которые удовлетворяют условию (where), что-то сделать с каждым элементом (select), превратить элементы в строку (select), а в завершение пройтись по всему листу и сделать трейс того, что получилось. Все остальные строки — это обычный AS код, который делает тоже самое. Так лаконично описать как работает этот код уже не получится.

Where, select, selectMany, findFirst, findLast операции — очень удобно использовать при запросах.

image

Операции all, any, containsAll, contains прекрасно работают в условиях.

image

Для модификации листа можно воспользоваться обширным арсеналом действий — remove, removeAll, removeWhere, removeTail, removeHead и другие.

image

Для всяких извращений с коллекциям есть foldLeft/foldRight, reduceLeft/reduceRight, intersect и другое.

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

В одних операциях вы передаете просто значения, в других вы добавляете код в кложуру.

Кложура эта по сути та же анонимная функция, но с несколькими отличиями.

image

Во-первых, кложура имеет очень краткий синтаксис параметры не имеют декларации типов (они есть, но они спрятаны). Во-вторых, кложура имеет поведение «последний стейтмент — return». То есть не обязательно писать return 1. Достаточно в последней строкой написать «1;».

Кроме того, она имеет специальное отображение для одиночных строк кложуры (которые обычно больше всего) — в таких кложурах не показывется точка с запятой вконце — опять же для читабельности к краткости.

В отличие от анонимной функции (в противовес built-in способам работы с коллекциями, кложура знает о типе элемента и работает автокомлит и проверки).

Резюмируя, можно сказать, что кложура — это такая функция на стероидах, которая много умеет и помогает нам писать быстро и компактно.

Для того, чтобы легко внедрить коллекции в AS проекты мы сделали операции конвертации. Вы можете взять обычный массив и сконвертировать его в list через операцию toList. Поработав с ним вы можете передать его old-school AS коду в виде обычного массива используя операцию toArray.

Для работы с векторами вы можете воспользоваться той же операцией toList и операцией toVector.

И напоследок — в коллекциях два типа — list и maps. Maps по сути это обычный Dictionary, который имеет несколько полезных методов — keys, values (возвращают лист ключей и значений) containsKey, containsValue (полезно для условий и проверок) и pushMap (для объединения значений). Модификация — removeKey, removeValue.

Мапы не дадут добавить ключ или значение неправильного типа:

image

Мапы прекрасно работают с листами и запросами.

image

Итак, если резюмируя, если у вас появилось обильное слюновыделение глядя на эти красоты — бегом на сайт realaxy.com и закачиваем свежую сборку. Что важно, репортим нам баги, ибо релиз не за горами и нам нужно чувствовать вашу поддержку.

Спасибо за внимание!
Tags:
Hubs:
Total votes 48: ↑39 and ↓9+30
Comments33

Articles