|
|
|
|
- Presentación
- Procedimiento Lambda
- Ejemplo
- Sintaxis
- Observaciones
- Expresión Lambda
- Ejemplo
- Sintaxis
- Observación
- Procedimiento Lambda tipado
- Ejemplo
- Sintaxis
- Observaciones
Lambda: Expresiones y procedimientos
Una expresión Lambda ("función Lambda") es una forma más concisa de escribir procedimientos internos. Las lambdas son útiles para las funciones que utilizan procedimientos de tipo "callback" como parámetros: esto significa que es posible introducir directamente el código de la función en lugar del parámetro. En ese caso: - el procedimiento no tiene nombre,
- el código del procedimiento se encuentra donde debería estar el nombre del procedimiento.
WLanguage propone varias sintaxis para utilizar funciones Lambda. Un procedimiento Lambda es un procedimiento interno anónimo, que no requiere especificar el tipo de parámetros y el valor de retorno. Ejemplo // Fill in a array with the names of all the files in the data directory arrFile is array of strings fListFile(fDataDir() + "\*.*", (Directory,File)=>{arrFile.Add(File)} )
En este código, el procedimiento Lambda corresponde al siguiente código: (Directory,File)=>{arrFile.Add(File)} Sintaxis - Procedimiento Lambda que no espera ningún parámetro:
() => { <WLanguage code of procedure>} - Procedimiento Lambda que espera un solo parámetro:
- sintaxis completa:
(<Parameter 1>) => { <WLanguage code of procedure>} - sintaxis simplificada:
<Parameter 1> => { <WLanguage code of procedure>}
- Procedimiento Lambda que espera varios parámetros:
(<Parameter 1>, ..., <Parameter N>) => { <WLanguage code of procedure>}
En estas sintaxis: - <Parámetro X> corresponde al nombre del parámetro.
- <Código WLanguage del procedimiento> corresponde al código WLanguage del procedimiento. Está encerrado entre llaves "{ }". Se pueden utilizar varias instrucciones
Observaciones - Esta sintaxis se puede utilizar en funciones WLanguage (fListFile, etc.), y en los procedimientos del proyecto. Para ello, el parámetro formal al que se pasa el procedimiento Lambda debe ser de tipo "Procedure".
- El procedimiento es anónimo, por lo tanto, no tiene nombre y no puede ser llamado en otro lugar o de forma recursiva.
- Un procedimiento Lambda no necesita recuperar todos los parámetros:
- los parámetros no utilizados no provocan advertencias durante la compilación,
- los parámetros omitidos al final del prototipo no provocan errores en tiempo de ejecución.
Una expresión Lambda es un procedimiento Lambda simplificado cuando el código WLanguage a ejecutar corresponde a: Ejemplo - Ejemplo de un procedimiento Lambda:
// count odd-numbered elements of an array arrValue is array of int = [1,2,3,4,5] Trace(CountValues(arrValue, x=>{RESULT modulo(x, 2)=1})) PROCEDURE CountValues(arrValue is array of int, Condition is procedure(x int):boolean) let n = 0 FOR EACH x OF arrValue IF Condition(x) THEN n++ END END RESULT n
- Simplificación a expresión Lambda:
// count odd-numbered elements of an array arrValue is array of int = [1,2,3,4,5] Trace(CountValues(arrValue, x=>modulo(x,2)=1)) PROCEDURE CountValues(arrValue is array of int, Condition is procedure(x int):boolean) let n = 0 FOR EACH x OF arrValue IF Condition(x) THEN n++ END END RESULT n
Sintaxis - Expresión Lambda que no espera ningún parámetro:
() => <WLanguage expression> - Expresión Lambda que espera un solo parámetro:
- sintaxis completa:
(<Parameter 1>) => <WLanguage expression> - sintaxis simplificada:
(<Parameter 1>) => <WLanguage expression>
- Expresión Lambda que espera varios parámetros:
(<Parameter 1>, ..., <Parameter N) => <WLanguage expression>
En estas sintaxis: - <Parámetro X> corresponde al nombre del parámetro.
- <Expresión WLanguage> corresponde a la expresión WLanguage a devolver.
Observación Esta sintaxis se puede utilizar en funciones WLanguage ( fListFile, etc.), y en los procedimientos del proyecto. Para ello, el parámetro formal al que se pasa la expresión Lambda debe ser de tipo "Procedure". Procedimiento Lambda tipado Un procedimiento Lambda tipado es un procedimiento interno anónimo, para el que se puede especificar el tipo de parámetros y el valor de retorno. Ejemplo // Fill in a array with // the names of all files in the data directory arrFile is array of strings fListFile(fDataDir() + "\*.*", ... PROCEDURE(Directory is string, File is string):string {arrFile.Add(File)})
Sintaxis PROCEDURE (<Parameter 1>, ..., <Parameter N>): <Type of return> { <WLanguage code of procedure>} En esta sintaxis: - <Parámetro X> corresponde al nombre del parámetro o de los parámetros del procedimiento Lambda. Este parámetro puede ser tipado o no tipado. Si un parámetro es tipado, la sintaxis es la siguiente
- <Tipo de retorno> corresponde al tipo devuelto por el procedimiento Lambda.
- <Código WLanguage del procedimiento> corresponde al código WLanguage del procedimiento. Está encerrado entre llaves "{ }".
Observaciones - Esta sintaxis se puede utilizar en funciones WLanguage (fListFile, etc.), y en los procedimientos del proyecto. Para ello, el parámetro formal al que se pasa el procedimiento Lambda debe ser de tipo "Procedure".
- El procedimiento es anónimo, por lo tanto, no tiene nombre y no puede ser llamado en otro lugar o de forma recursiva.
- Un procedimiento Lambda no necesita recuperar todos los parámetros:
- los parámetros no utilizados no provocan advertencias durante la compilación,
- los parámetros omitidos al final del prototipo no provocan errores en tiempo de ejecución.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|