如何为Dart编写注释

时间:2014-05-04 12:52:31

标签: javascript annotations dart

问题:

  • 实施注释的步骤是什么。
  • 如何,或者何时可以激活您开发的注释?

我似乎找不到关于如何编写类来实现注释的示例或教程。

例如,对于Java,您可能有一个注释,它表示在编译时调用的类,并允许您修改或注入代码。 Dart注释也是这样的吗?

背景

我已经做了一些(进一步)深入了解Dart生态系统的这个领域。我正在添加一些注释,因为注释可以是一个功能强大的透明注释,如何使用它。

在查看Dart的一些实际注释后,Dart注释会记录“a 符号”(标签或元数据标签)。问题是如何在Dart中使用注释。

gloaming

我目前的理解是基于查看代码位,它们是类对象的标记。看起来注释是highly-unstructured,因为虽然可以简单地声明注释,但没有结构可供使用或识别标签(也称为注释)。

注释步骤

  1. 确定要标记的属性或操作。
  2. 需要编写要使用的代码或'工作'您的注释。以Observe之类的方式为例。
  3. 您可以实施和测试LOAD时间代码以查找和处理您的标签。我没有看到注册注释和提供处理程序的基础结构。
    • 这是通过库中的main()方法完成的。
  4. 实施和测试注释行为。
  5. 至少我认为这是如何运作的。这个领域的Dart language specification并没有太多的信息。

    观察和检查也提出了一些一般性问题。我已经留下了各种各样的例子,以帮助其他人加入探索。

    读数

    实施例

1 个答案:

答案 0 :(得分:4)

任何带有const构造函数的类都可以用作注释。

const FOO = const Foo(37);

@Foo(42)
class Foo {
  @Deprecated("until further notice");
  final int x;
  @FOO
  const Foo(this.x);
}

没有更多内容。

另见https://www.dartlang.org/docs/dart-up-and-running/contents/ch02.html#ch02-metadata

元数据本身不起任何作用。如果您的程序想要读取类的元数据,则需要使用镜像。

import 'dart:mirrors';
const tag = "TAG"; 

@tag class C {}
void main() {
  print(reflectClass(C).metadata.first.reflectee);  // prints "TAG"
  var c = new C();
  print(reflect(c).type.metadata.first.reflectee);  // prints "TAG" 
}

请参阅:https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-mirrors.ClassMirror#id_metadata

或者,您可以直接处理来源。例如,dart2js编译器有一个“源镜像”库,它反映了源结构。 dart2js和分析器用来理解“代理”注释。