Dart语法基础_Metadata

前言

本篇要介绍的一个概念是metadata也可以叫做元信息,在前面的几篇文章中,并没有提及这个概念。不过对于其他语言的学习者来说metadata这个概念应该还是了解的。但是在Dart中这个更像是Java的注解。

Metadata

Dart官方文档中,对metadata是这样定义的:

Use metadata to give additional information about your code. A metadata annotation begins with the character @, followed by either a reference to a compile-time constant (such as deprecated) or a call to a constant constructor.

这段话告诉我们,元编程其实就是在我们代码中提供更多附加信息的一种手段,一个元信息注解以@开头,后面需要跟一个编译时常量的引用或者一个常量的构造函数调用。

Dart官方提供了四个注解,在所有的Dart代码中都能使用,这四个注解分别是:@Deprecated,@deprecated,@override,@pragma,其中的@override在前面的文章中已经使用过了,就是用来表示一个重写的标识符,而@Deprecated@deprecated的作用基本一致,只是使用@deprecated时不需要提供提示消息,使用@Deprecated则需要显示的指定一个提示消息。

注解的使用是非常方便,并且简单的,示例如下:

class Television {
  ('Use turnOn instead')
  void activate() {
    turnOn();
  }
  void turnOn() {...}
}

实现自己的注解

Dart中实现一个自己的注解还是很方便的,只需要定义一个拥有常量构造函数的类即可。示例如下:

class Todo {
  final String who;
  final String what;

  const Todo(this.who, this.what);
}
('Dash', 'Implement this function')
void doSomething() {
  print('Do something');
}

但是这只是定义一个注解,我们没有办法通过注解拿到被该注解修饰的数据,Dart也没有提供直接获取被修饰数据的手段,所以要通过一些其他的手段来获取,比如遍历AST,或者使用反射。能获取到被修饰的信息,注解才能发挥真正的威力,就如同JAVA中的那样,需要一些框架的支持,才能让注解变得强大。

作者水平有限,以上内容可能有解释不当,或者解释有误,请及时指正,作者看到会第一时间修改。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值