Concepto de clases invocables en Dart

Dart permite al usuario crear una clase invocable que permite llamar a la instancia de la clase como una función . Para permitir que una instancia de su clase Dart se llame como una función, implemente el método call()

Sintaxis:

class class_name {
  ... // class content
  
  return_type call ( parameters ) {
    ... // call function content
  }
  
}

En la sintaxis anterior, podemos ver que para crear una clase invocable tenemos que definir un método de llamada con un tipo de devolución y parámetros dentro de él.

Ejemplo 1: Implementación de una clase invocable en Dart.

Dart

// Creating Class GeeksForGeeks
class GeeksForGeeks {
    
  // Defining call method which create the class callable
  String call(String a, String b, String c) => 'Welcome to $a$b$c!';
}
  
// Main Function
void main() {
  // Creating instance of class
  var geek_input = GeeksForGeeks();
    
  // Calling the class through its instance
  var geek_output = geek_input('Geeks', 'For', 'Geeks');
    
  // Printing the output
  print(geek_output);
}

 

Producción:

Welcome to GeeksForGeeks!

Debe tenerse en cuenta que Dart no es compatible con varios métodos invocables, es decir, si intentamos crear más de una función invocable para la misma clase, se mostrará un error .

Ejemplo 2: Implementación de múltiples funciones invocables en una clase de Dart.

Dart

// Creating Class GeeksForGeeks
class GeeksForGeeks {
  // Defining call method which create the class callable
  String call(String a, String b, String c) => 'Welcome to $a$b$c!';
    
  // Defining another call method for the same class
  String call(String a) => 'Welcome to $a!';
}
  
// Main Function
void main() {
  // Creating instance of class
  var geek_input = GeeksForGeeks();
    
  // Calling the class through its instance
  var geek_output = geek_input('Geeks', 'For', 'Geeks');
    
  // Printing the output
  print(geek_output);
}

 

Producción:

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 *