Dardo – Símbolos

En Dart, los símbolos son básicamente una representación de objetos de un identificador u operador. Los símbolos en dart son nombres de string opacos y dinámicos que no se pueden cambiar y permanecen constantes durante el tiempo de compilación. Se puede usar para reflejar los metadatos en un tipo, como una biblioteca o una clase. Generalmente se utilizan para crear API y establecen una relación entre una string que es comprensible para los humanos y una string que pueden usar las computadoras.

Los símbolos se pueden usar para obtener información diversa sobre un tipo (biblioteca, clase, etc.), como una lista de métodos de instancia, constructores, etc.

Creación de símbolos

Los símbolos se pueden crear de 2 maneras diferentes:

1. Agregar un símbolo Hash (#) a un identificador lo convertiría en un Símbolo

print(#mysymbol);

Producción:

Symbol("mysymbol")

2. De lo contrario, se puede crear un símbolo explícitamente usando el constructor de Clase.

Symbol mySymbol = Symbol('mysymbol');
print(mySymbol);

Producción:

Symbol("mysymbol")

Ejemplo:

En este ejemplo, crearemos una biblioteca personalizada y luego mostraremos sus metadatos mediante símbolos.

Aquí, primero creamos un Dart File Custom.dart que contiene una biblioteca custom_lib , que consta de una clase llamada CustomClass que tiene métodos customFunction1 y customFunction2 .

Dart

library custom_lib;
  
class CustomClass {
  void customFunction1() {
    print("Custom Function 1");
  }
  
  void customFunction2() {
    print("Custom Function 2");
  }
}

A continuación, crearemos el archivo main.dart , que importará el Custom. archivo dart junto con un par de otras bibliotecas como dart:core y dart:mirror

  • Primero, crearemos 2 símbolos. Uno para la biblioteca personalizada y el otro para la clase personalizada.
  • A continuación, tenemos que inicializar el sistema espejo y crear una referencia espejo a nuestra biblioteca custom_lib , y luego usar eso, a nuestra clase CustomClass.
  • Usando classMirror , ahora podemos extraer algunos datos, es decir, una lista de métodos presentes en nuestra clase. Eso incluye –
    • Métodos creados por el usuario como customFunction1
    • Métodos integrados como toString

Dart

import 'dart:core';
import 'dart:mirrors';
import 'Custom.dart';
  
void main() {
    
  // Create symbols for library and class
  Symbol libraryName = Symbol('custom_lib');
  Symbol className = Symbol('CustomClass');
  
  // Init mirror system
  MirrorSystem mirrorSystem = currentMirrorSystem();
  LibraryMirror libMirror = mirrorSystem.findLibrary(libraryName);
  ClassMirror classMirror = libMirror.declarations[className];
  
  // Get and print methods
  final methods = classMirror.instanceMembers;
  print('Total number of methods = ${methods.length}');
  methods.forEach((symbol, method) {
    print(symbol);
  });
}

Producción:

Total number of methods = 7
Symbol("==")
Symbol("hashCode")
Symbol("toString")
Symbol("noSuchMethod")
Symbol("runtimeType")
Symbol("customFunction1")
Symbol("customFunction2")

Publicación traducida automáticamente

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