📜  Dart – 元数据

📅  最后修改于: 2021-09-02 05:33:46             🧑  作者: Mango

元数据基本上是告诉我们底层数据的一段数据。它是关于数据的数据。在Dart编程的情况下,元数据可以用来告诉我们更多关于代码的信息。每当我们与新代码进行交互时,我们都可以借助元数据推断出与其相关的信息。

在dart,元数据注释以@ 符号开头然后是对常量构造函数或编译时常量(如覆盖)的调用。 @override@deprecated可用于所有dart代码。

我们将看到一个@override 注释的例子来清楚地理解它——

Dart
class geek1 {
  void code() {
    print("I am at level 1");
  }
}
  
class geek2 extends geek1 {
  @override
  void code() {
    print("I am at level 2");
  }
}
  
void main() {
  geek2 m = new geek2();
  m.code();
}


Dart
class Implement {
  final String what;
  final String by;
  
  const Implement(this.what, this.by);
}
  
@Implement('the following function', 'Geek1')
void geekFunc() {
  print('Implement me');
}
  
void main() {
  geekFunc();
}


输出:

I am at level 2

解释:

从上面的代码,我们可以推断出子类正在覆盖父类的方法。 @override 注释使此信息更加清晰。除了dart可用的注释之外,我们还可以创建自己的元数据注释。

例子:

Dart

class Implement {
  final String what;
  final String by;
  
  const Implement(this.what, this.by);
}
  
@Implement('the following function', 'Geek1')
void geekFunc() {
  print('Implement me');
}
  
void main() {
  geekFunc();
}

输出:

Implement me

在这里,我们使用常量构造函数定义了 @Implement 注释。它有两个参数,即什么是要实施的,另一个是表明由谁来实施。

元数据可以在库、类型参数、函数、构造函数、类等之前以及导入或导出指令之前使用。借助反射,我们可以在运行时获取元数据。