我刚刚花了 20 个小时学习 Dart 语言的基础知识,但是当我@在开源 Dart 程序(例如这里)中找到前缀(我发现大多数程序都使用它)时,我想知道该@指令在这些程序中做了什么程式...
供您参考,官方文档如下:
\n\n\n元数据\n\n使用元数据提供有关代码的附加信息。元数据注释以字符 @ 开头,后跟对编译时常量(例如 deprecated)的引用或对常量构造函数的调用。\n\n所有 Dart 代码都可以使用三个注释:@deprecated、@override和@proxy。有关使用 @override 和 @proxy 的示例,请参阅名为 \xe2\x80\x9c 扩展类\xe2\x80\x9d 的部分。这里\xe2\x80\x99是使用@deprecated注释的示例:\n\n\n
@但是,该指令向代码中添加了哪些“附加信息” ?如果通过编写以下构造函数来创建实例
@todo(\'seth\', \'make this do something\')\nRun Code Online (Sandbox Code Playgroud)\n\n,而不是以下默认构造函数:
\n\ntodo(\'seth", \'make this do something\')\nRun Code Online (Sandbox Code Playgroud)\n\n,我可以从第一个构造函数中得到什么好处?
\n\n我已经知道使用内置元数据(例如@deprecated和 )@override可以给我在运行应用程序时收到警告的优势,但是我可以从自定义的案例@todo或上述通过 Github 链接的示例代码中得到什么?
可以通过dart:mirrors库访问注释。每当您想要提供有关类、方法等的附加信息时,您都可以使用自定义注释。例如,@MirrorsUsed用于为 dart2js 编译器提供额外信息,以优化生成的 JavaScript 的大小。
注释通常对框架或库作者比应用程序作者更有用。例如,如果您在 Dart 中创建 REST 服务器框架,则可以使用注释将方法转换为 Web 资源。例如,它可能类似于以下内容(假设您已经创建了 @GET 注释):
@GET('/users/')
List<User> getUsers() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以让框架在服务器启动时使用镜像扫描代码,以查找带有 @GET 注释的所有方法,并将该方法绑定到注释中指定的 URL。
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |