PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE

¡Nueva funcionalidad WINDEV, WEBDEV, WINDEV Mobile 25!
Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • Presentación
  • Procedimiento Lambda
  • Ejemplo
  • sintáctico
  • Observaciones
  • Expresión Lambda
  • Ejemplo
  • sintáctico
  • Observación
  • El procedimiento lambda
  • Ejemplo
  • Sintaxis
  • Observaciones
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Presentación
Una lambda («función lambda») es una forma más concisa de escribir procedimientos internos.
Las Lambdas son útiles para todas las funciones que toman como parámetros los procedimientos de devolución de llamada: esto significa que es posible introducir el código de la función directamente en lugar del parámetro. En este caso:
  • el procedimiento no tiene nombre,
  • el código del procedimiento es directamente donde el nombre del procedimiento debe ser.
WLanguage ofrece varias sintaxis para el uso de las lambdas.
Procedimiento Lambda
Un procedimiento lambda es un procedimiento interno anónimo, para el cual no es necesario teclear los 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 a lo siguiente:
(Directory,File)=>{arrFile.Add(File)}

sintáctico

  • El procedimiento Lambda que no espera ningún parámetro:
    () => { <WLanguage code of procedure>}
  • El procedimiento Lambda que espera sólo un parámetro:
    • sintaxis completa:
      (<Parameter 1>) => { <WLanguage code of procedure>}
    • sintaxis simplificada:
      <Parameter 1> => { <WLanguage code of procedure>}
  • El 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 de idioma del procedimiento> corresponde al código de idioma del procedimiento. Está encerrado entre { y }. Se pueden utilizar varias declaraciones

Observaciones

  • Esta sintaxis puede ser utilizada en funciones de WLanguage (fListFile, etc.) pero también en los procedimientos del proyecto. Para ello, el parámetro formal al que se pasa el procedimiento lambda debe ser de tipo "Procedimiento".
  • El procedimiento es anónimo, por lo que 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 activan una advertencia en el momento de la compilación,
    • Los parámetros omitidos al final del prototipo no provocan un error en tiempo de ejecución.
Expresión Lambda
Una expresión lambda es un procedimiento lambda simplificado cuando el código WLanguage a ejecutar corresponde a:
RESULT <Expression>

Ejemplo

  • Ejemplo usando 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

  • La simplificación como 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

sintáctico

  • Expresión lambda que no espera ningún parámetro:
    () => <WLanguage expression>
  • Expresión lambda que espera sólo un 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.
  • <WLanguage expression> corresponde a la expresión WLanguage para volver.

Observación

Esta sintaxis puede ser utilizada en funciones de WLanguage (fListFile, etc.) pero también en los procedimientos del proyecto. Para ello, el parámetro formal al que se pasa la expresión lambda debe ser de tipo "Procedimiento".
El procedimiento lambda
Un procedimiento lambda tipificado es un procedimiento interno anónimo, para el cual se pueden tipificar los 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ámetros X> corresponde al nombre de los parámetros del procedimiento lambda. Este parámetro puede ser escrito o no escrito. Si se teclea un parámetro, su sintaxis es
    <Identifier> [is] <Type>
  • <Tipo de retorno> corresponde al tipo devuelto por el procedimiento lambda.
  • <Código de idioma del procedimiento> corresponde al código de idioma del procedimiento. Está encerrado entre { y }.

Observaciones

  • Esta sintaxis puede ser utilizada en funciones de WLanguage (fListFile, etc.) pero también en los procedimientos del proyecto. Para ello, el parámetro formal al que se pasa el procedimiento lambda debe ser de tipo "Procedimiento".
  • El procedimiento es anónimo, por lo que 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 activan una advertencia en el momento de la compilación,
    • Los parámetros omitidos al final del prototipo no provocan un error en tiempo de ejecución.
Versión mínima requerida
  • Versión 25
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario