06 | 基础语法与类型变量:Dart是如何表示信息的?
陈航
该思维导图由 AI 生成,仅供参考
你好,我是陈航。
今天,我们就从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习 Dart 吧。
Dart 初体验
下面是一个基本的 hello world 示例,我声明了一个带 int 参数的函数,并通过字符串内嵌表达式的方式把这个参数打印出来:
然后,在编辑器中点击“run”按钮,命令行就会输出:
和绝大多数编译型语言一样,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
《Flutter 核心技术与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(26)
- 最新
- 精选
- 加温后的啤酒老师,能详细解释下final和const吗。你说“const,表示变量在编译期间即能确定的值; final 则可以在运行时确定值”。 那是否能理解为:在编译期间能确定的值 用const或者用final修饰都可以,但是在运行时确定的值,只能用final修饰??
作者回复: 在定义const常量时,你必须直接赋一个字面量,而不能是一个变量或者公式; 在定义final常量时,如何赋值就无所谓了,但赋值后就不能再改了。
2019-07-11247 - TerryGoForIt思考题: Dart 是支持泛型的,所以可以使用形如 List<dynamic> 和 Map<String, dynamic> 为集合添加不同类型的元素,遍历时判断类型用 is 关键字。
作者回复: 如果类型是可枚举的,这样做是可以的。但不建议定义容器类型时用dynamic哈,最好还是明确下类型,比如放double和int的可以用num
2019-07-11227 - davidzhou所有皆为对象,就可以通过反射机制获取对象的类型,不过,list和map不做类型约束的话,在读取里面数据会有很多坑,代码也不够健壮
作者回复: 棒棒哒。纠正一个小问题:这里不是反射,是运行时类型。另外Flutter是不支持Dart 的反射的哈。
2019-07-1413 - 七分呗轻唱runtimeType 判断
作者回复: 可以的。 如果类型是可枚举的,用"if(v is num)" 或 "if(v is String)"也可以
2019-07-117 - 于留月可以使用List<dynamic> 和 Map<dynamic>支持多种类型内部元素,遍历集合时,可以根据泛型确认数据类型
作者回复: 可以的。不过不太建议用dynamic,如果是int和double,用num即可
2019-07-114 - 晓冰对于Map和List 我在写swift时也是需要指定确定类型的,同一个字典或者数组类型一般都要一样,如果不一样处理起来麻烦,自己的程序就不要给自己挖坑了 哈哈。 只有在一种情况下我才会使用Any 就是提交服务器数据的时候,由于配置的数据类型不可能完全一样。
作者回复: 赞
2019-08-293 - 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-1122 - 薛敬飞帮忙解释一下评论区中Dynamic?为啥不建议用这个?
作者回复: 为了类型安全呀
2019-07-131 - Young类,方法参数,返回值都可以指定泛型,判断单个元素的类型可以使用is
作者回复: 可以的
2019-07-111 - cv0cv0Dart 支持扩展函数吗?
作者回复: Dart 2.7才支持 https://dart.dev/guides/language/extension-methods
2019-12-13
收起评论