dart 系列之:dart 语言中的变量
简介
flutter 是 google 在 2015 年 dart 开发者峰会上推出的一种开源的移动 UI 构建框架,使用 flutter 可以非常方便的编译成运行在原始 android,ios,web 等移动平台上的移动应用。
flutter 是使用 dart 来编写的,最新的 flutter 版本是 2.5.3,而最新的 Dart 语言版本是 2.14。
本系列将会深入谈谈 dart 语言的用法和最佳实践,希望大家能够喜欢。
dart 中的变量
Dart 语言吸取了 java 和 javascript 的精华,如果你是上述语言的开发者,那么会很容易迁移到 dart 语言上。我们先从一个语言最基本的变量开始,探讨 dart 语言的奥秘。
定义变量
Dart 中定义变量和 java,javascript 中定义变量是一致的,如下所示:
上面我们使用 var 表示 name 的类型是可以通过推断得到。在程序编写过程中,如果我们遇到某些变量并不知道其类型的时候,可以尝试使用 var,让 dart 自行推断。
当然,我们也可以指定变量的类型,如上所示,可以指定 name 为 String 类型:
在 dart 中,所有的变量都是 Object,而每个对象都是一个 Class 的实例。包括数字、函数、null 都是 Object。所有的对象都继承自 Object 类。
所以上面的赋值也可以这样写:
变量的默认值
在 dart 中,未初始化的变量都有一个 nullable 类型的值,这个值的初始值是 null。
和 java 中不一样的是,dart 中所有的 number 的初始值也是 null。这是因为 dart 中的 number 也是一个对象。
如果一个变量可以为 null,那么在赋值的时候可以在变量类型后面加上?, 如下所示:
对于类变量来说,只会在使用的时候进行初始化,这种初始化策略叫做延时初始化。
Late 变量
Late 修饰符是在 Dart 2.12 引入的新特性。他可以表示变量需要被延时加载,或者表示一个不为空的变量会在后续被初始化。
我们可以这样使用:
为什么用 late 呢?因为有时候 Dart 无法检查某些变量在使用之前是否被初始化了,但是如果你非常确定的话,使用 late 来修饰它即可。
另外,late 修饰的变量只有在使用的时候才会被初始化,所以我们可以使用 late 来定义一些耗时、耗资源的操作。
常量
如果变量是不会变化的,那么这就不是变量了,而是常量。
常量可以用 final 或者 const 来修饰,final 变量表示变量只会被赋值一次。
而 const 变量表示变量会在编译的时候被赋值,默认 const 也是 final 的。
如下所示:
如果 const 变量是 class 变量,那么将其设置为 static。
constant 还可以用来赋值,如下所示:
上面的代码中,虽然 age 的值是 const 的,但是 age 本身并不是 const,所以 age 是可以重新被赋值的:
但是 bar 是 final 的,所以 bar 并不能被重新赋值。
总结
以上就是 dart 语言的变量使用了。
本文已收录于 www.flydean.com
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
作者:程序那些事
链接:https://juejin.cn/post/7026735563663228941
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
版权声明: 本文为 InfoQ 作者【程序那些事】的原创文章。
原文链接:【http://xie.infoq.cn/article/c734d4463e8f5958bba27035f】。文章转载请联系作者。
评论