Los operadores lambda se utilizan para construir el resultado de una matriz. El resultado varía dependiendo del arreglo y del operador utilizado en la expresión. La siguiente tabla contiene los operadores disponibles:
Nombre | Operador | Sintaxis | Resultado |
---|---|---|---|
Alguno | any |
array any (var => boolean) |
boolean |
Todo | all |
array all (var => boolean) |
|
Ninguno | none |
array none (var => boolean) |
|
Contador | count |
array count (var => boolean) |
number |
Mapa | map |
array map (var => judgment) |
array[judgment] |
select |
array select (var => judgment) |
||
Filtro | filter |
array filter (var => boolean) |
array |
where |
array where (var => boolean) |
||
Primero |
first |
array first (var => boolean) |
Sintaxis básica
A diferencia de otros operadores, los operadores lambda tienen una sintaxis única que permite obtener datos de una tabla sin la necesidad de utilizar una etiqueta b:loop:
tabla operador (variable => expresión)
El primer operando es una tabla seguido del operador Lambda, luego empieza la expresión lambda conformado por una variable y otra expresión (variable => expresión)
, la variable puede ser cualquier término y se utilizará para rehacer los datos de la tabla.
Any
El operador any comprueba si al menos uno de los datos de la tabla corresponde al criterio. El resultado será booleano:
<b:eval expr='data:posts any (p => p.title contains "Receta")'/>
La operación anterior devuelve true
si en la tabla data:posts
al menos uno de los títulos contiene el texto Receta.
All
El operador all comprueba si todos los datos de la tabla corresponden al criterio. El resultado será booleano:
<b:eval expr='data:posts all (p => p.numComments gt 2)'/>
La operación anterior devuelve true
si todas las entradas de la tabla data:posts
contienen más de 2 comentarios.
None
El operador none comprueba si ninguno de los datos de la tabla corresponden al criterio. El resultado será booleano:
<b:eval expr='data:posts none (p => p.numComments gt 2)'/>
La operación anterior devuelve true
si ninguna entrada de la tabla data:posts
tiene más de 2 comentarios.
Count
El operador count devuelve el numero de conjuntos de la tabla que corresponden al criterio. El resultado será numérico:
<b:eval expr='data:posts count (p => p.title contains "Review")'/>
La operación anterior devuelve el número de entradas de la tabla data:posts
que contienen el texto "Review" en el título. El resultado es numérico.
Map
El operador map crea una nueva tabla a partir de un elemento de la tabla o del resultado de la expresión, que será del mismo tipo que el resultado:
<b:loop values='data:post.labels map (l => l.name)' var='newArray'>
<data:newArray/>
</b:loop>
La operación anterior crea una nueva tabla que contiene únicamente el nombre de las etiquetas.
Filter
El operador filter filtra en una tabla los elementos que corresponden al criterio, el resultado será una nueva tabla que contendrá únicamente los elementos restantes.
<b:loop values='data:post.labels filter (l => l.name neq "Blog")' var='newArray'>
<data:newArray/>
</b:loop>
La operación anterior crea una nueva tabla que no contiene la etiqueta "Blog".
First
El operador first devuelve el primer elemento de una tabla que corresponda al criterio, el resultado será una nueva tabla que contendrá únicamente ese elemento.
<b:loop values='data:posts filter (p => p.title contains "Juegos")' var='newArray'>
<data:newArray/>
</b:loop>
La operación anterior devuelveúnicamente el primer elemento de la tabla data:posts
que contenta el texto "Juegos".
Mas detalles y ejemplos en: Lambda operators Blogger Code PE.