Flutter 核心技术与实战
陈航
前美团点评高级技术专家
42432 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
Flutter 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

06 | 基础语法与类型变量:Dart是如何表示信息的?

类型约束
添加键值对和迭代
声明和初始化
类型约束
添加元素和迭代
声明和初始化
多行字符串
字符串拼接
内嵌表达式
UTF-16的字符串
显式检查值
true和false
dart:math库
常见运算符和方法
64位int和64位double
Map
List
字符串类型String
布尔类型bool
数值类型num
const和final关键字
List与Map
num、bool、String
常量定义
内置基本类型
类型安全的语言
默认情况下未初始化变量的值
var与具体类型声明
main函数作为执行入口
运行Dart代码
思考题
学习参考资料
Dart语言特性
流程控制语法
Dart的基本语法和类型系统
Dart的变量与类型
Dart初体验
总结
变量与类型

该思维导图由 AI 生成,仅供参考

你好,我是陈航。
在专栏的第 2 篇预习文章“Dart 语言概览”中,我们简单地认识了 Dart 这门优秀的程序语言。那么,Dart 与其他语言究竟有什么不同呢?在已有其他编程语言经验的基础上,我又如何快速上手呢?
今天,我们就从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习 Dart 吧。

Dart 初体验

为了简单地体验一下 Dart,我们打开浏览器,直接在repl.it 新建一个 main.dart 文件就可以了(当然,你也可以在电脑安装 Dart SDK,体验最新的语法)。
下面是一个基本的 hello world 示例,我声明了一个带 int 参数的函数,并通过字符串内嵌表达式的方式把这个参数打印出来:
printInteger(int a) {
print('Hello world, this is $a.');
}
main() {
var number = 2019;
printInteger(number);
}
然后,在编辑器中点击“run”按钮,命令行就会输出:
Hello world, this is 2019.
和绝大多数编译型语言一样,Dart 要求以 main 函数作为执行的入口。
在知道了如何简单地运行 Dart 代码后,我们再来看一下 Dart 的基本变量类型。

Dart 的变量与类型

在 Dart 中,我们可以用 var 或者具体的类型来声明一个变量。当使用 var 定义变量时,表示类型是交由编译器推断决定的,当然你也可以用静态类型去定义变量,更清楚地跟编译器表达你的意图,这样编辑器和编译器就能使用这些静态类型,向你提供代码补全或编译警告的提示了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Dart语言基础语法与类型变量是学习Dart编程语言的重要一步。本文首先介绍了Dart的基本语法和类型系统,包括变量声明、类型推断和静态类型定义。其次,详细介绍了Dart中的基本变量类型,如num、bool和String,以及集合类型List和Map的使用方法。文章还强调了Dart是类型安全的语言,所有类型都是对象类型,继承自顶层类型Object。此外,还介绍了常量定义和类型约束的使用方法。通过本文的介绍,读者可以快速了解Dart语言的基本特点和语法规则,为进一步学习和应用Dart语言打下基础。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • 加温后的啤酒
    老师,能详细解释下final和const吗。你说“const,表示变量在编译期间即能确定的值; final 则可以在运行时确定值”。 那是否能理解为:在编译期间能确定的值 用const或者用final修饰都可以,但是在运行时确定的值,只能用final修饰??

    作者回复: 在定义const常量时,你必须直接赋一个字面量,而不能是一个变量或者公式; 在定义final常量时,如何赋值就无所谓了,但赋值后就不能再改了。

    2019-07-11
    2
    47
  • TerryGoForIt
    思考题: Dart 是支持泛型的,所以可以使用形如 List<dynamic> 和 Map<String, dynamic> 为集合添加不同类型的元素,遍历时判断类型用 is 关键字。

    作者回复: 如果类型是可枚举的,这样做是可以的。但不建议定义容器类型时用dynamic哈,最好还是明确下类型,比如放double和int的可以用num

    2019-07-11
    2
    27
  • davidzhou
    所有皆为对象,就可以通过反射机制获取对象的类型,不过,list和map不做类型约束的话,在读取里面数据会有很多坑,代码也不够健壮

    作者回复: 棒棒哒。纠正一个小问题:这里不是反射,是运行时类型。另外Flutter是不支持Dart 的反射的哈。

    2019-07-14
    13
  • 七分呗轻唱
    runtimeType 判断

    作者回复: 可以的。 如果类型是可枚举的,用"if(v is num)" 或 "if(v is String)"也可以

    2019-07-11
    7
  • 于留月
    可以使用List<dynamic> 和 Map<dynamic>支持多种类型内部元素,遍历集合时,可以根据泛型确认数据类型

    作者回复: 可以的。不过不太建议用dynamic,如果是int和double,用num即可

    2019-07-11
    4
  • 晓冰
    对于Map和List 我在写swift时也是需要指定确定类型的,同一个字典或者数组类型一般都要一样,如果不一样处理起来麻烦,自己的程序就不要给自己挖坑了 哈哈。 只有在一种情况下我才会使用Any 就是提交服务器数据的时候,由于配置的数据类型不可能完全一样。

    作者回复: 赞

    2019-08-29
    3
  • Qilin Lou
    抛砖引玉哈,直接拿各个item的runtimeType属性,简单代码如下 main() { var arr = [1,2,'s']; arr.forEach( (v) => print('The value is ${v}, and the type is ${v.runtimeType}') ); }

    作者回复: 可以的。 如果类型是可枚举的,用"if(v is num)" 或 "if(v is String)"也可以

    2019-07-11
    2
    2
  • 薛敬飞
    帮忙解释一下评论区中Dynamic?为啥不建议用这个?

    作者回复: 为了类型安全呀

    2019-07-13
    1
  • Young
    类,方法参数,返回值都可以指定泛型,判断单个元素的类型可以使用is

    作者回复: 可以的

    2019-07-11
    1
  • cv0cv0
    Dart 支持扩展函数吗?

    作者回复: Dart 2.7才支持 https://dart.dev/guides/language/extension-methods

    2019-12-13
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部