Clausura (informática)

Clausura (informática)

En Informática, una clausura es una función que es evaluada en un entorno conteniendo una o más variables dependientes de otro entorno. Cuando es llamada, la función puede acceder a estas variables. El uso explícito de clausuras se asocia con programación funcional y con lenguajes como el ML y el Lisp. Construcciones como los objetos en otros lenguajes pueden ser también modelados con clausuras.

En algunos lenguajes, una clausura puede aparecer cuando una función está definida dentro de otra función, y la función más interna refiere a las variables locales de la función externa. En tiempo de ejecución, cuando la función externa se ejecuta, se forma una clausura, consistiendo en el código de la función interna y referencias a todas las variables de la función externa que son requeridas por la clausura.

Una clausura puede ser usada para asociar una función con un conjunto de variables "privadas", que persisten en las invocaciones de la función. El ámbito de la variable abarca sólo al de la función definida en la clausura, por lo que no puede ser accedida por otro código del programa. No obstante, la variable mantiene su valor de forma indefinida, por lo que un valor establecido en una invocación permanece disponible para la siguiente. Como consecuencia, las clausuras pueden ser usadas para esconder estados e implementar programación orientada a objetos.

El concepto de clausura fue desarrollado en los años 60 e implementado de forma completa, por primera vez, como una característica más del lenguaje de programación Scheme. Desde entonces, muchos otros lenguajes han sido diseñados para soportar clausuras.

Un ejemplo, en lenguaje Perl

#!/usr/bin/perl -w
 
# Aquí tenemos una función que crea otra, que nos servirá para saber si el argumento que le pasamos
# es superior o no al del valor de referencia con el que fue creada
sub crea_funcion_mayor_que ($) {
    my $limite = shift;            # Valor con el que se creará la función
                                   # La variable $limite es local a la función crea_funcion_mayor_que()
 
    return                         # Devolvemos
        sub {                          # una función
            return                         # que nos devuelve
                $_[0] > $limite;           #  verdadero si su primer argumento supera nuestro $limite.
        };
                                   # A partir de este punto $limite debería desaparecer,
                                   # pero no lo hace, porque sigue siendo referenciada
                                   # por la nueva función que acabamos de crear
}
 
my $es_mayor_que_5 = crea_funcion_mayor_que 5; # Creamos una función que comparará con el valor 5
my $es_mayor_que_3 = crea_funcion_mayor_que 3; # Idem, con el valor 3
 
my $test = 8; # Valor a comparar
 
if ( $es_mayor_que_5->($test) ) { # Ver si $test $es_mayor_que_5
    print "$test es mayor que 5 \n";
}
else {
    print "$test no es mayor que 5 \n";
}
 
# Aquí se podría utilizar la función $es_mayor_que_3 de la misma manera. Las dos variables
# $limite de las dos funciones creadas son completamente independientes entre sí.

Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • Clausura — puede referirse a: Cierre, por oposición a apertura o inauguración (especialmente en los actos solemnes). Clausura monástica o conventual. Matemáticas En matemáticas, la clausura o cerradura se refiere al mínimo conjunto que es cerrado bajo una… …   Wikipedia Español

  • Olimpiada Mexicana de Informática — El logo de la Olimpiada Mexicana de Informática La Olimpiada Mexicana de Informática (OMI) es un concurso a nivel nacional para jóvenes de nivel medio y nivel medio superior con facilidad para resolver problemas prácticos mediante la lógica y el… …   Wikipedia Español

  • Teoría del orden — La teoría del orden es una rama de la matemática que estudia varias clases de relaciones binarias que capturan la noción intuitiva del orden matemático. Este artículo da una introducción detallada a este campo e incluye algunas de las… …   Wikipedia Español

  • Universidad Central del Ecuador — Coordenadas: 10°29′21.22″N 66°53′27.84″O / 10.4892278, 66.8910667 …   Wikipedia Español

  • Check Wikipedia — Wikiproyecto:Check Wikipedia Saltar a navegación, búsqueda Esta página contiene de forma consciente fallos ortográficos. Los bots no deben intentar corregirlos. Atajo PR:CWPR:CW …   Wikipedia Español

  • Clásico del fútbol mexicano — Existen desacuerdos sobre la neutralidad en el punto de vista de la versión actual de este artículo o sección. En la página de discusión puedes consultar el debate al respecto. El Clásico del Fútbol Mexicano, popularmente conocido en México como… …   Wikipedia Español

  • Club Atlético Nueva Chicago — Nueva Chicago Nombre completo Club Atlético Nueva Chicago Apodo(s) Torito de Mataderos , Verde Fundación 1 de julio de 1911 (100 años) Estad …   Wikipedia Español

  • Morelia — Para otros usos de este término, véase Morelia (desambiguación). En este artículo sobre geografía se detectaron los siguientes problemas: Necesita ser wikificado conforme a las convenciones de estilo de Wikipedia. Carece de f …   Wikipedia Español

  • Alex Varas —  Alex Varas Spielerinformationen Voller Name Alex Fabián Varas Rubio[1] Geburtstag 26. März 1976[1] Geburtsor …   Deutsch Wikipedia

  • Matehuala — Escudo …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”