AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Sintaxis WLanguage / Procedimientos WLanguage
  • Presentación
  • Procedimiento Lambda
  • Ejemplo
  • Sintaxis
  • Observaciones
  • Expresión Lambda
  • Ejemplo
  • Sintaxis
  • Observación
  • Procedimiento Lambda tipado
  • Ejemplo
  • Sintaxis
  • Observaciones
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
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.
Procedimiento 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.
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 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
    <Identifier> [is] <Type>
  • <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.
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

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local