Многие наверно читали или слышали про язык запросов LINQ.
Это чрезвычайно удобное средства обработки данных. По удобству использование не уступающий и иногда даже немного превосходящий старый добрый SQL. Собственно, почему я это пишу.
Несколько месяцев назад мне нужно было, как то сгруппировать и обработать данные в массиве внутри Flex ActionScript приложения. Но я не хотел обрабатывать объекты просто перебирая их в цикле. И я тогда нашел ActionLinq.
Итак, ActionLinq это практически полная имплементация языка запросов LINQ для ActionScript.
Вот простой пример
На странице wiki ActionLinq можно прочитать, что поддерживаются многие операторы LINQ. Там же есть кое какие примеры . Так же если хотите больше примеров рекомендую посмотреть на юнит тесты проекта.
Это чрезвычайно удобное средства обработки данных. По удобству использование не уступающий и иногда даже немного превосходящий старый добрый SQL. Собственно, почему я это пишу.
Несколько месяцев назад мне нужно было, как то сгруппировать и обработать данные в массиве внутри Flex ActionScript приложения. Но я не хотел обрабатывать объекты просто перебирая их в цикле. И я тогда нашел ActionLinq.
Итак, ActionLinq это практически полная имплементация языка запросов LINQ для ActionScript.
Вот простой пример
package
{
import flash.display.Sprite;
import System.Collection.Generic.IGrouping;
import System.Linq.Enumerable;
/**
* ...
* @author ami...[at]mail.ru
*/
public class AcLinq extends Sprite
{
public function AcLinq()
{
var data:Array = [ { name: "Сергей", age: 20, city: "Москва" },
{ name: "Максим", age: 21, city: "Москва" },
{ name: "Володя", age: 25, city: "Минск" },
{ name: "Сергей", age: 19, city: "Минск" } ];
var new_data:Array = Enumerable.from(data).groupBy(function(name:Object):String
{
return name.name;
},
function(values:Object):Object
{
return {age: values.age, city: values.city};
},
function(name:String, vals:IGrouping):Object
{
return { name: name, count:vals.count() };
}).toArray();
/*
* А получаем мы в итоге нечто вроде
* Сергей, 2
* Володя, 1
* Максим, 1*/
trace(new_data);
}
}
}
А самым удобным является что внутри конструкций function() можно определять любые стандартные операторы и конструкции ActionScript и возвращать нужные значения.На странице wiki ActionLinq можно прочитать, что поддерживаются многие операторы LINQ. Там же есть кое какие примеры . Так же если хотите больше примеров рекомендую посмотреть на юнит тесты проекта.