@在Dart程序中做什么?
我刚刚花了20个小时学习了Dart语言的基础知识,但当我在开源Dart程序中找到@在Dart程序中做什么?,dart,metadata,Dart,Metadata,我刚刚花了20个小时学习了Dart语言的基础知识,但当我在开源Dart程序中找到@前缀时,我想知道@指令在这些程序中做了什么 供参考: 元数据 使用元数据提供有关代码的其他信息。元数据注释以字符@开头,后跟对编译时常量的引用(如弃用)或对常量构造函数的调用。 所有Dart代码都有三个注释:@deprecated、@override和@proxy。有关使用@override和@proxy的示例,请参阅“扩展类”一节。下面是使用@deprecated注释的示例: 但是,@指令向代码中添加了哪些“附加
@
前缀时,我想知道@
指令在这些程序中做了什么
供参考:
元数据
使用元数据提供有关代码的其他信息。元数据注释以字符@开头,后跟对编译时常量的引用(如弃用)或对常量构造函数的调用。
所有Dart代码都有三个注释:@deprecated、@override和@proxy。有关使用@override和@proxy的示例,请参阅“扩展类”一节。下面是使用@deprecated注释的示例:
但是,@
指令向代码中添加了哪些“附加信息”?如果您通过编写以下构造函数来创建实例
@todo('seth', 'make this do something')
,而不是以下默认构造函数:
todo('seth", 'make this do something')
,我能从第一个构造函数中得到什么好处
我知道,使用内置元数据,如
@deprecated
和@override
可以让我在运行应用程序时得到警告,但是我可以从自定义@todo
的案例中得到什么,或者通过Github获得上述链接示例代码 您可以对代码进行一些“推理”。
您可以查询字段/方法/类/库/。。。具有特定注释的。
您可以使用反射获取这些代码部分。省道内反射由“省道:镜像”包完成
您可以在此处找到一个代码示例:
经常使用注释的一个示例是用于序列化或数据库持久化,在该示例中,您向类添加metatdata,该类可由序列化/持久化框架用作配置设置,以了解如何处理字段或方法
例如,您添加了一个@Entity()
注释,以指示应该持久化此类。
在每个应该持久化的字段上添加另一个注释,如@Column()
。
许多持久性框架都会根据此元数据自动生成数据库表。
为此,他们需要更多信息,因此您可以在应用作主键的字段上添加@Id()
,并在@Column(name:'first_name',键入:'varchar',length:32)
中定义数据库表和列的参数。
这只是一个例子。限制是你的想象力。注释可以通过库访问。只要您想提供关于类、方法等的附加信息,就可以使用自定义注释。例如,它用于向dart2js编译器提供额外信息,以优化生成的JavaScript的大小 注释通常比应用程序作者对框架或库作者更有用。例如,如果要在Dart中创建REST服务器框架,可以使用注释将方法转换为web资源。例如,它可能类似于以下内容(假设您创建了@GET注释):
@GET(“/users/”)
列出getUsers(){
// ...
}
然后,您可以让框架在服务器启动时使用镜像扫描代码,以查找带有@GET注释的所有方法,并将该方法绑定到注释中指定的URL