<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Code Space

      Blue sky

       

      Dart library 可見性及 library part / part of 命令詳解—庫的組合及可見性

      一、庫與可見性的概念

          首先說明一個概念,在dart中,默認一個dart文件就是一個庫,稱為Mini Library.而不是在pubspec中用name關鍵字定義的包名下的lib目錄下的所有的文件是一個庫。理解了這個概念以后,再理解可見性就簡單多了。官方文檔說的“Every Dart app is a library”,實際上很多翻譯過來都是不對的(實際上我覺得官方原文說的也有歧義)。因為如果每一個dart App都是一個庫的話,那么如果這個App由多個dart文件組成,你會發(fā)現以‘_’開頭的庫成員(變量/方法等)在多個dart文件之間仍然不用復用,這也給我造成了很久的困惑。

          總之:dart默認一個dart文件就是一個庫,該庫中以‘_’開頭的庫成員,僅在庫內可見,庫外不可見。

      二、library、part、part of 關鍵字說明

      2.1 多個文件組成一個庫

          雖然在官方文檔和effective dart中,均不推薦使用library 和part 關鍵字,但一直想弄明白這兩個關鍵字是怎么使用的,以及又對前面提到的可見性有什么影響。

          前面提到,dart默認一個dart文件就是一個庫,那么如何將多個文件組成一個庫呢?這就需要使用library和part關鍵字了。比如,我們做一個測試項目,文件目錄結構如下:

       我們將visib/visib1/visib2三個dart文件組成一個庫。

      1、首先,指定一個主庫文件,我們用visib.dart。在visib.dart中,使用library關鍵字定義庫名(visib):

      library visib;

       2、然后分別在visib1/visib2 兩個分庫文件中,使用part of 關鍵字,聲明是庫的一部分:

      part of visib;

      特別說明的一點是,1、2、步驟的兩句聲明,一定要放在文件的第一行,否則會出錯。

      3、在visib.dart中,采用 part 關鍵字建立關聯:

      part 'visib1.dart';
      part 'visib2.dart';

       這樣,這三個dart文件就組成了一個庫 library visib。

      2.2 上述庫的可見性及使用方法

      2.2.1 庫內可見性

          上面3個文件組成一個庫以后,這3個文件內以‘_’開頭的成員,在庫內(3個文件內)可見,可互相調用,比如visib1.dart可以隨意調用visib.dart 或 visib2.dart的所有成員,就像它們是在同一個dart文件中一樣。且文件頭部不再需要使用import指令導入庫內的文件。當然,不以‘_’開頭的更可見了。

      2.2.2 外部庫導入注意點

          特別強調的一點是,如果需要使用import導入其它的庫,則該指令只能放在主庫文件中,不能放在分庫文件中主庫文件中導入的外部庫,分庫不用重復導入即可直接引用。同時,import指令位置也有要求,只能放在 library 和 part指令行之間,否則也會報錯。示例代碼如下:

      library visib;
      
      import 'dart:math';
      
      part 'visib1.dart';
      part 'visib2.dart';
      
      void visib() {
        visib1();
        visib2();
        _vis1();
        _vis2();
      }

      void _visi() {}

       2.2.3 其它庫如何使用多個文件組成的庫

          其它庫或腳本如果需要上述visib庫,則只需要/也只能導入主庫文件即可。該庫內位于多個文件內的不以‘_’開頭的成員,均可被調用。以‘_’開頭的成員則不可見。示例代碼如下:

      import 'package:hello_lib/visibility/visib.dart';
      
      void main() {
        visib();
        // var vv = _Visib1();
        visib1(); // in visib1.dart
      }

       如上述代碼中的visib1()方法,就是定義在分庫文件visib1.dart中。如果導入分庫文件visib1.dart,則編譯器直接提示錯誤:

      The imported library ''package:hello_lib/visibility/visib1.dart'' can't have a part-of directive.
      Try importing the library that the part is a part of.dart(import_of_non_library)

       意思就是說你導入的是個分庫文件,請導入主庫。

       

          以上就是關于庫、library、part、可見性的說明,其中參考了:

      http://www.5imoban.net/jiaocheng/dart/2020/0929/4002.html

      文檔,向原作者致敬。

      posted on 2021-02-06 16:32  一抹青陽  閱讀(3771)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲理论在线A中文字幕| 国产自拍偷拍视频在线观看| 国产中文字幕久久黄色片| 日韩放荡少妇无码视频| 石景山区| 色吊丝一区二区中文字幕| 香蕉久久久久久久AV网站| 少妇高潮喷水正在播放| 久久碰国产一区二区三区| 久久中文字幕日韩无码视频| 一卡2卡三卡4卡免费网站| 亚洲性日韩精品一区二区三区| 国产精品久久久尹人香蕉| 云龙县| 精品嫩模福利一区二区蜜臀| 免费人成网站免费看视频| 香格里拉县| 久久精品蜜芽亚洲国产av| 亚洲日韩国产精品第一页一区 | 韩国无码AV片午夜福利| 国产不卡一区二区三区视频 | 九九热免费公开视频在线| 国产成人不卡一区二区| 成 年 人 黄 色 大 片大 全| 国产一区二区在线观看粉嫩 | 99热门精品一区二区三区无码| 男女啪啪高潮激烈免费版| 午夜国产福利片在线观看| 国产aⅴ夜夜欢一区二区三区| 美女午夜福利视频一区二区| 四虎国产精品永久入口| 无码人妻精品丰满熟妇区| 日韩高清福利视频在线观看| 国产精品亚洲二区在线播放| 凤山市| 蜜臀av日韩精品一区二区 | 成人午夜视频一区二区无码 | 乱色欧美激惰| 日韩激情成人| 亚洲国产亚洲综合在线尤物| 亚洲av成人三区国产精品|