在 Dart 中importlibrary指令可以帮助你创建模块化且可共享的代码库。库不仅仅构成了 dart 程序的模块化单元,而且还是访问权限可见的单元,比如我们都知道在 dart 使用_下划线开头标识符表示仅仅库内访问权限可见。每个 Dart 应用程序默认都是一个library,只是没有使用library指令显示声明。其实这个就不得不引出一个概念那就是:“顶层” 的概念,比如前面文章提到过顶层变量、顶层函数就是和这个有关。然而在 Kotlin 中也有顶层的概念,不过 Kotlin 中的顶层相对于单个代码文件而言,而类比可理解 Dart 的库也就是单个代码文件而言的。

一、顶层

1、什么是顶层?

顶层实际上是一种相比类更广的作用域,Dart 中的顶层单元和 Kotlin 一样就是文件作用域,那么在文件作用域比类就会更广,顶层内部可以包含若干个类、顶层函数、顶层变量等

我们不妨先来看个例子:

//main.dart
main() {//此 main 函数就是 main.dart 库中的顶层函数print('hello dart');
}//实际上相当于
library main;//默认隐藏了一个 main 的 library 的声明
main() {print('hello dart');
}

实际上,上述例子中就是一个由顶层函数 main 构成的一个库。一般来说,一个库是由多个顶层声明构成的,这些声明可以是顶层变量、函数(比如例子中的 main 函数)等。

下面通过深入理解一个 stack 库的例子:

//stack1.dart
library stac

掌握 Dart 中库 library 的使用相关推荐

  1. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  2. 详解Dart中如何通过注解生成代码

    简介:详解dart与java注解生成代码异同点 作者:闲鱼技术-龙湫 1.背景 最近在项目中使用到了Dart中的注解代码生成技术,这跟之前Java中APT+JavaPoet生成代码那套技术还是有一些不 ...

  3. Dart入门—库、泛型与异常

    Dart入门-库.泛型与异常 库 Pub仓库 在Pub上可以下载到支持各种功能的包,首页在根目录下建立pubspec.yaml文件 name: test_app dependencies:sqljoc ...

  4. 如何在Dart中合并列表

    在 Dart 编程中,List 数据类型类似于其他编程语言中的数组.列表用于表示对象的集合.它是一组有序的对象.Dart 中的核心库负责 List 类的存在.创建和操作.有 5 种方法可以组合两个或多 ...

  5. dart系列之:在dart中使用数字和字符串

    文章目录 简介 数字 字符串 StringBuffer 总结 简介 要想熟悉一种语言,最简单的做法就是熟悉dart提供的各种核心库.dart为我们提供了包括dart:core,dart:async,d ...

  6. dart系列之:在dart中使用packages

    文章目录 简介 pubspec.yaml get packages 使用packages 升级依赖 总结 简介 java中使用jar包来封装有用的功能,然后将其分发到maven仓库中,供其他人使用.同 ...

  7. python中库是什么意思_python库是什么意思

    1.Python库(library) 库的概念是具有相关功能模块的集合.这也是Python的一大特色之一,即具有强大的标准库.第三方库以及自定义模块. 2.python模块是: python模块:包含 ...

  8. Cadence Allegro PCB设计88问解析(十四) 之 Allegro中库路径设置方法

    一个学习信号完整性的layout工程师 大家在进行Layout设计时,最重要就是导入网表,放入元器件,然后进行走线.那其中的元器件就是今天和大家分享的一点,不管是阻容感,还是各种IC.连接器都是有封装 ...

  9. Dart中抽象类 多态以及接口

    Dart中抽象类:Drat抽象类主要是用于定义标准,子类可以继承抽象类,也可以实现抽象类接口. 1.抽象类通过abstract关键字来定义 2.Drat中的抽象方法不能用abstract声明,Dart ...

最新文章

  1. vue项目按需引入element-ui,修改.babelrc文件之后报错
  2. 金融风控实战——有监督分箱
  3. 如何在没有Springockito的情况下模拟Spring bean
  4. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(三十七)地图自适应区域加载...
  5. 安装 PostgreSQL 时丢失 libintl-8.dll 解决方案
  6. cmd 220 ftp 远程主机关闭连接_下载ftp软件,下载ftp软件需要注意3点
  7. UVA 558 SPFA 判断负环
  8. html 链接 vf,VFP中超链接实现方法
  9. 算术表达式:前缀表达式、中缀表达式、后缀表达式相互转换(手算法)
  10. C语言之选择结构与循环结构
  11. 如何控制局域网网速_免费局域网监控软件如何提升控制性能 - 百科
  12. 武汉好地科技为您解析CMMI3和CMMI5的区别
  13. VMware虚拟机安装教程
  14. 论文写作参考文献 期刊标准缩写
  15. rds是什么云模式_IaaS、PaaS、SaaS、DaaS都是什么?
  16. ajax的state,ajax 中readystate一直为1
  17. item_history_price - 获取京东商品历史价格信息
  18. 【转贴】北大学生对一MM征婚广告经典回复
  19. 宏碁笔记本关闭安全启动Secure Boot,就是改为Disabled
  20. 用于定义图像热区的html标记是,html 图像热区链接

热门文章

  1. Flask-自定义头像
  2. 青少年CTF Misc-Easy 百家姓 WP
  3. 卫星位置、速度、加速度、加加速度计算公式推导
  4. jedis连接redis失败解决
  5. ubuntu 修改开机启动项默认值
  6. 版本管理工具介绍—Git篇
  7. Ubuntu下载安装EDB1.3.0 2021.07
  8. 中兴如何远程服务器时间同步,IPRAN时钟同步方案分析
  9. 获取国家统计局行政区划数据(复制粘贴)
  10. 最新人人分销程序V9.9商业版+活动模块/数十套微模板