Dart Symbol

2025年3月17日 | 阅读 3 分钟

Symbol 对象用于指定在 Dart 编程语言中声明的运算符或标识符。一般来说,我们在 Dart 编程中不需要使用符号,但它们对 API 很有帮助。它通常通过名称引用标识符,因为标识符名称可以变化,但标识符符号不能。

Dart 符号是动态字符串名称,用于从库中派生元数据。它主要积累了增强供计算机使用的可读字符串之间的连接。

符号有一个术语,称为反射;它是一种在运行时使用元数据的技术,例如 - 类中使用的函数数量,类中构造函数的数量,或函数中参数的数量。

dart:mirrors 库拥有所有与反射相关的类。它可用于命令行应用程序以及 Web 应用程序。

语法 -

hash(#) 符号,后跟名称用于在 Dart 中定义 Symbol。语法如下所示。

语法 -

在这里,有效的标识符,例如函数、有效的类、公共成员名称或库名称,可以用于代替 name 值。

让我们理解下面的例子。

示例 -

在上面的代码中,我们在库 foo_lib 中声明了一个名为 Foo 的类。该类包含方法 m1、m2 和 m3。我们将上面的文件保存为 foo.dart。

现在,我们正在创建新文件 FooSymbol.dart 并运行以下代码。

FoolSystem.dart

输出

Found Library
checkng...class details..
No of classes found is : 1
Symbol("Foo")
found class
No of instance methods found is 8
Symbol("==")
Symbol("hashCode")
Symbol("toString")
Symbol("noSuchMethod")
Symbol("runtimeType")
Symbol("m1")
Symbol("m2")
Symbol("m3")

Dart 将 Symbol 转换为 String

我们可以使用内置类 MirrorClass 将 Dart 符号转换为字符串,该类由 dart:mirror 包提供。让我们理解以下示例。

示例 -

输出

Symbol("foo_lib")
foo_lib

下一个主题Dart Runes