写点什么

dart 系列之:dart 语言中的变量

发布于: 4 小时前
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 = 'jack';复制代码
复制代码

上面我们使用 var 表示 name 的类型是可以通过推断得到。在程序编写过程中,如果我们遇到某些变量并不知道其类型的时候,可以尝试使用 var,让 dart 自行推断。

当然,我们也可以指定变量的类型,如上所示,可以指定 name 为 String 类型:

String name = 'jack';复制代码
复制代码

在 dart 中,所有的变量都是 Object,而每个对象都是一个 Class 的实例。包括数字、函数、null 都是 Object。所有的对象都继承自 Object 类。

所以上面的赋值也可以这样写:

Object name = 'jack';复制代码
复制代码

变量的默认值

在 dart 中,未初始化的变量都有一个 nullable 类型的值,这个值的初始值是 null。

和 java 中不一样的是,dart 中所有的 number 的初始值也是 null。这是因为 dart 中的 number 也是一个对象。

如果一个变量可以为 null,那么在赋值的时候可以在变量类型后面加上?, 如下所示:

int? age;复制代码
复制代码

对于类变量来说,只会在使用的时候进行初始化,这种初始化策略叫做延时初始化。

Late 变量

Late 修饰符是在 Dart 2.12 引入的新特性。他可以表示变量需要被延时加载,或者表示一个不为空的变量会在后续被初始化。

我们可以这样使用:

late int age;
void main() { age = 18; print(age);}
复制代码
复制代码

为什么用 late 呢?因为有时候 Dart 无法检查某些变量在使用之前是否被初始化了,但是如果你非常确定的话,使用 late 来修饰它即可。

另外,late 修饰的变量只有在使用的时候才会被初始化,所以我们可以使用 late 来定义一些耗时、耗资源的操作。

常量

如果变量是不会变化的,那么这就不是变量了,而是常量。

常量可以用 final 或者 const 来修饰,final 变量表示变量只会被赋值一次。

而 const 变量表示变量会在编译的时候被赋值,默认 const 也是 final 的。

如下所示:

final age = 18; final int age = 18;复制代码
复制代码


const age = 20; 复制代码
复制代码

如果 const 变量是 class 变量,那么将其设置为 static。

constant 还可以用来赋值,如下所示:

var age = const [];final bar = const [];const baz = []; // Equivalent to `const []`复制代码
复制代码

上面的代码中,虽然 age 的值是 const 的,但是 age 本身并不是 const,所以 age 是可以重新被赋值的:

foo = [18, 21, 23]; 复制代码
复制代码

但是 bar 是 final 的,所以 bar 并不能被重新赋值。

总结

以上就是 dart 语言的变量使用了。

本文已收录于 www.flydean.com

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

作者:程序那些事

链接:https://juejin.cn/post/7026735563663228941

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发布于: 4 小时前阅读数: 5
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020.06.07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
dart系列之:dart语言中的变量