zoukankan      html  css  js  c++  java
  • 【dart学习】-- Dart之元数据

    一,概述

    • 元数据概述

        元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

    • 元数据定义

        元数据(Metadata)是描述其它数据的数据(data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)。元数据是描述信息资源或数据等对象的数据,其使用目的在于:识别资源;评价资源;追踪资源在使用过程中的变化;实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。 

    • 元数据(MetaData)如何理解
      元数据是用来描述数据的数据(Data that describes other data)。单单这样说,不太好理解,我来举个例子。

      (她)年纪已经不轻,三十岁上下,个子高挑,身材匀称,黑黑的眉毛,红红的脸蛋--一句话,不是姑娘,而是果冻,她那样活跃,吵吵嚷嚷,不停地哼着小俄罗斯的抒情歌曲,高声大笑,动不动就发出一连串响亮的笑声:哈,哈,哈!
      
       这段话里提供了这样几个信息:年龄(三十岁上下)、身高(个子高挑)、相貌(身材匀称,黑黑的眉毛,红红的脸蛋)、性格(活跃,吵吵嚷嚷,不停地哼着小俄罗斯的抒情歌曲,高声大笑)。有了这些信息,我们就可以大致想像出瓦莲卡是个什么样的人。推而广之,只要提供这几类的信息,我们也可以推测出其他人的样子。

        这个例子中的"年龄"、"身高"、"相貌"、"性格",就是元数据,因为它们是用来描述具体数据/信息的数据/信息。

    二,dart中元数据

    • 使用元数据给代码添加更多的信息。
    • 元数据是以@开始的修饰符,在@后面接着编译时的常量或调用一个常量构造函数。
    • 目前dart语言提供三个@修饰符:
      • (注解) - @deprecated 被弃用的。  
        • 含义:若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。
        • 作用:因为在一个项目中,工程比较大,代码比较多,而在后续开发过程中,可能之前的某个方法实现的并不是很合理,这个时候就要新加一个方法,而之前的方法又不能随便删除,因为可能在别的地方有调用它,所以加上这个注解,就方便以后开发人员的方法调用了。
          class Television {
            @deprecated
            void activate(){
              turnOn();
            }
          
            void turnOn(){
              print('Television Turn On!');
            }
          
          }
          
          main(){
             dynamic tv = new Television();
             tv.activate();
             tv.turnOn();
          }

          打印结果:

          [Running] dart "/var/folders/l1/jvw4fvds26320gck06xj7xdh0000gn/T/tempCodeRunnerFile.dart"
          Television Turn On!
          Television Turn On!
      • (注解) - @override重写。
        • 帮助自己检查是否正确的复写了父类中已有的方法
        • 告诉读代码的人,这是一个复写的方法
          //动物类
          class Animal {
              //动物会吃
              void eat(){
                print('动物会吃');
              }
              //动物会跑
              void run(){
                print('动物会跑');
              }
          }
          //人类
          class Human extends Animal {
            void say (){
               print('人会说话');
            }
          
            void study(){
              print('人类也会吃');
            }
          
            @override 
            void eat(){
               print('人类也会吃');
            }
          }
          
          main (){
            print('实例化一个动物类');
            var animal = new Animal();
            animal.eat();
            animal.run();
          
            print('实例话一个人类');
            var human = new Human();
            human.eat();
            human.run();
            human.say();
            human.study();
          }
      • @proxy 代理。

      • @required 来标记一个参数,表示这个参数必须要传值。
        • 告诉编译器这个参数必须要传值
        • 告诉读代码的人,这个参数必须要填写
        MyScaffold({Key key,@required this.items}):super(key:key);
    • 定义自己的元数据

      • 通过library来定义一个库,在库中定义一个相同名字的class,然后在类中定义const 构造方法。  
        // 定义
        library todo;
         
        class todo {
          final String who;
          final String what;
         
          const todo(this.who, this.what);
        }
         
        // 使用
        import 'todo.dart';
         
        @todo('seth', 'make this do something')
        void doSomething() {
          print('do something');

    三,总结

      元数据可以修饰以下内容

      • library(库), 
      • class(类), 
      • typedef(类型定义), 
      • type parameter(类型参数), 
      • constructor(构造函数), 
      • factory(工厂函数), 
      • function(函数), 
      • field(作用域), 
      • parameter(参数),
      • variable declaration(变量声明)。
  • 相关阅读:
    区块链,去中心化应用基本知识与开发实践学习
    服务铝料门窗基本资料
    微信小游戏发布注意事项
    2018阿里云短信发送DEMO接入简单实例
    #SQL1242错误
    百度站内搜索
    jqGrid 手册
    4步 —— 快速开始运行直播小程序
    数字平滑 前端插件JS&CSS库
    jqGrid 中文配置
  • 原文地址:https://www.cnblogs.com/lxlx1798/p/11022305.html
Copyright © 2011-2022 走看看