Simulando Expressões Lambda com Arrow Functions e Node.js

Fala galera, tudo certo?

Hoje vou falar sobre uma biblioteca que estou utilizando em meus projetos em Node.js, e que sem dúvidas está facilitando, e muito, o desenvolvimento!

O nome da biblioteca é devbox-linq. Você pode saber mais sobre ela olhando lá no site do npm: https://www.npmjs.com/package/devbox-linq e também pode mandar sugestões e correções de bugs por aqui é só dar um fork e mandar um pull request 😀

E o que nós podemos fazer com ela?

Vamos lá então! Eu desenvolvo com C# há um bom tempo, e me acostumei a usar expressões lambda. Que são maneiras simples de filtrar e manipular listas, como exemplo: “Preciso trazer apenas clientes que tenham mais de 20 anos e sejam do sexo masculino”, a consulta ficaria desse jeito:


public IEnumerable<Cliente> ClientesMasculinosComMaisDeVinteAnos(IEnumerable<Cliente> clientes)
{
//Reparem no uso da expressão Lambda
return clientes.Where(c => c.Idade > 20 && c.Sexo == "Masculino");
}

view raw

FiltroLambda.cs

hosted with ❤ by GitHub

E conseguimos fazer várias coisas com ele além de filtrar, como ordenar, retirar elementos iguais (distinct), adicionar, verificar se determinado elemento existe na lista, somar, contar, executar funções de agrupamento, enfim, podemos fazer várias operações com nossa lista. E senti necessidade de utilizar algo parecido no Node.js.

Quem me salvou foi o Gustavo Maritan que também trabalhou com C# e está brincando com Node.js.

É possível ‘imitarmos’ a sintaxe das expressões lambda, mantendo um código limpo e declarativo graças ao EcmaScript 6 que nos disponibilizou as Arrow Functions.

E como eu uso esse cara?

Fácil! Vou colocar alguns exemplos aqui, mas vocês também podem consultar a documentação que está bem simples e prática!

Para utilizar em seu projeto web, por exemplo, basta instalar o pacote via npm, utilizando o comando:

npm install devbox-linq --save

Chega de falação e vamos ao código!

Abaixo deixei alguns exemplos de uso, espero que seja proveitoso!


require('devbox-linq');
var listaNumeros = [1, 6, 2, 5, 9, 6];
var listaNumerosMaioresQueCinco = listaNumeros.Where(x => x > 5);
var listaOrdenada = listaNumeros.OrderBy(x => x).ToList();
var listaOrdenadaDecrescente = listaNumeros.OrderByDesc(x => x).ToList();
var soma = listaNumeros.Sum(x => x);
var distinct = listaNumeros.Distinct(x => x);
var possuiAlgumNumeroCinco = listaNumeros.Any(x => x == 5);
var todosOsNumerosSaoCinco = listaNumeros.All(x => x == 5);
console.log('listaNumerosMaioresQueCinco');
console.log(listaNumerosMaioresQueCinco);
console.log('listaOrdenada');
console.log(listaOrdenada);
console.log('listaOrdenadaDecrescente');
console.log(listaOrdenadaDecrescente);
console.log('soma');
console.log(soma);
console.log('distinct');
console.log(distinct);
console.log('possuiAlgumNumeroCinco');
console.log(possuiAlgumNumeroCinco);
console.log('todosOsNumerosSaoCinco');
console.log(todosOsNumerosSaoCinco);

view raw

ExemplosLinq.js

hosted with ❤ by GitHub

Executando isso no console, o resultado é o seguinte:
results

Nos exemplos utilizei uma lista de números pra ficar bem didático, porém, podemos utilizar objetos bem mais complexos, com objetos dentro de objetos, listas, e tudo que o seu coração mandar!

Por hoje é só, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀

Advertisement

2 thoughts on “Simulando Expressões Lambda com Arrow Functions e Node.js

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s