perl | Enlace léxico y enlace dinámico

El enlace léxico y el enlace dinámico en Perl , es un sistema por el cual se define el valor y el alcance de las variables y hace que la variable sea fácil de encontrar por su nombre respectivo. Perl5 admite enlaces léxicos y dinámicos

Enlace léxico: también se conoce como enlace estático . Un alcance vinculante es como la sintaxis, las funciones, etc., que crea valores de tabla completamente nuevos, y los nombres de las variables se clasifican en orden de clasificación, lo que se conoce como el entorno. Este enlace se introdujo en Emacs . Esto creó muchas oportunidades para la máxima utilización, por lo que los programas que lo utilizan tienen una característica ventajosa para ejecutarse más rápido en las futuras versiones de Emacs. Son más reconciliables con la concurrencia que luego se agregó a la versión 26.1 de Emacs. Ámbito léxico significa que la referencia hecha a una variable enlazada léxicamente debe ubicarse en la construcción del enlace.

Funcionamiento del enlace léxico: el entorno léxico se define mejor mediante una construcción de enlace, que especifica los valores locales de las variables que están limitadas en la construcción. El entorno léxico es el primer lugar donde el evaluador Lisp analiza el valor específico de la variable. El alcance de la vinculación léxica es indefinido. Significa que incluso después de que finalice la ejecución del entorno léxico, no se descartará y se podrá volver a utilizar cada vez que se llame.
Ejemplo:

#!/usr/bin/perl
  
# Perl program to demonstrate 
# lexical binding
  
{
    # begin lexical scope
    my $var = "GeeksforGeeks";
    print "\$var is: ", (defined $var ? 
                                 $var : "Geeks"), $/;
  
} # end lexical scope
  
# Executing outside lexical scope
print "\$var is: ", (defined $var ? 
                             $var : "Geeks"), $/;
Producción:

$var is: GeeksforGeeks
$var is: Geeks

En el código de ejemplo anterior, el alcance de la variable $var se define para ese cuerpo de código en particular y se cambia cuando se llama desde el exterior. Esto muestra que una vez que se ha salido del ámbito léxico, se eliminará todo lo creado en este ámbito léxico.

Vinculación dinámica: también se denomina vinculación tardía, una opción alternativa a la vinculación léxica o estática. Este enlace es un sistema por el cual el programa espera a que finalice el tiempo de ejecución y luego enlaza el método por el nombre que se conoce como una subrutina real. Esta vinculación es más costosa pero al mismo tiempo tiene sus propios beneficios como evitar conflictos entre versiones. Java y C++ son lenguajes comunes que pueden realizar enlaces dinámicos. El concepto que se suele utilizar en la vinculación dinámica es la anulación de métodos .
¿Por qué usar Vinculación Dinámica?

  • Implementación más fácil. Todo el concepto fue entendido por la masa mucho antes de la unión léxica.
  • Era más sensato para otras personas y fácil de entender.

Ejemplo:

#!/usr/bin/perl
  
# Perl program to demonstrate 
# Dynamic binding
package Animal;
  
sub new 
{
    my $class = shift;
      
    # Bless into the correct class
    bless {}, $class; 
}
  
sub method1 
{
    my $this = shift;
    print("This is Animal class Method 1");
}
  
sub method2 
{
    my $this = shift;
    print("\nThis is Animal class Method 2");
}
  
package cat;
  
our @ISA = (Animal); # cat is a subclass of Animal
  
sub method2
{
    my $this = shift;
    print("\nThis is cat class Method 1");
}
  
package main;
  
# Calls Animal::new but creates a 'cat' object
my $cat = new cat; 
  
# Calls Animal::new but creates a 'dog' object
my $dog = new Animal; 
  
$dog->method1(); # Calls Animal::method1
$cat->method2(); # Calls cat::method2
Producción:

This is Animal class Method 1
This is cat class Method 1

En el código de ejemplo anterior, Perl utiliza el concepto de anulación de métodos para realizar la operación de vinculación dinámica. Muestra cómo Dynamic Binding permite acceder al contenido de la clase fuera de su alcance.

Publicación traducida automáticamente

Artículo escrito por raspreetk10 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 *