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