¿Qué es el alcance léxico y los cierres léxicos en Dart?

Ámbito léxico:

Es el término utilizado en varios lenguajes de programación (no solo en dart) para describir una condición en la que el alcance de la variable no está presente cuando el control está fuera del bloque de código donde estaba presente el alcance. Dart es un lenguaje de alcance léxico, es decir, puede encontrar el alcance de la variable con la ayuda de las llaves.

Ejemplo 1: Ámbito léxico de una variable.

// Declaring a variable whose scope is global
var outter_most;
  
void main() {
// This variable is inside main and can be accessed within
  var inside_main;
  
  void geeksforgeeks() {
// This variable is inside geeksforgeeks and can be accessed within
    var inside_geeksforgeeks;
  
    void geek() {
// This variable is geek and can be accessed within
      var inside_geek;
  
    }
  }
}
The above code depicts, about the scope of the variable in dart function and how their scope 
ends outside braces.

Cierres léxicos:

En los lenguajes de programación, un cierre léxico, también llamado cierre o cierre de función, es una forma de implementar el enlace de nombre de ámbito léxico en una función. Es un objeto de función que tiene acceso a variables en su ámbito léxico, incluso cuando la función se usa fuera del ámbito.

Ejemplo 2:

Function geeksforgeeks(num add) {
  return (num i) => add + i;
}
  
void main() {
  // Create a function that adds 2.
  var geek1 = geeksforgeeks(2);
  
  // Create a function that adds 4.
  var geek2 = geeksforgeeks(4);
  
  print(geek1(3));
  print(geek2(3));
}

Producción:

5
7
Note:
Functions can close over variables defined in surrounding scopes. In the following example,
geeksforgeeks() captures the variable addBy. Wherever the returned function goes, it remembers
"add" variable.

Publicación traducida automáticamente

Artículo escrito por aditya_taparia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *