wil*_*ill 8 javascript annotations dart
问题:
我似乎找不到关于如何编写类来实现注释的示例或教程
镖.
例如,对于 Java,您可能有一个表示在编译时调用的类的注解,并允许您修改或注入代码。Dart 注释是否也像这样工作?
我已经对 Dart 生态系统的这一领域进行了一些(进一步的)挖掘。我正在添加一些注释,因为注释可以是强大的,并且可以对如何使用它进行透明的评论。
在查看了 Dart 的一些实际注释后,Dart 注释记录了“一个符号”(标签或元数据标签)。问题是如何在 Dart 中使用注解。
基于查看代码位,我目前的理解是它们是类对象上的标记。看起来注释是高度非结构化的,因为虽然可以简单地声明注释,但没有结构可以使用或识别标签(又名annotation)。
注释步骤
至少我认为它是这样工作的。Dart 语言规范中关于这方面的信息并不多。
观察和检查也提出了一些一般性问题。我留下了一个阅读清单,里面有各种各样的例子,以帮助其他人加入探索。
阅读:
例子:
lrn*_*lrn 13
任何具有 const 构造函数的类都可以用作注解。
const FOO = const Foo(37);
@Foo(42)
class Foo {
@Deprecated("until further notice");
final int x;
@FOO
const Foo(this.x);
}
Run Code Online (Sandbox Code Playgroud)
仅此而已。
另见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"
}
Run Code Online (Sandbox Code Playgroud)
请参阅:https : //api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-mirrors.ClassMirror#id_metadata
或者,您可以直接处理源。例如,dart2js 编译器有一个反映源结构的“源镜像”库。这就是 dart2js 和分析器为理解“代理”注释所做的工作。
| 归档时间: |
|
| 查看次数: |
6227 次 |
| 最近记录: |