1. 首页

【Flutter 1-7】Flutter教程Dart语言——变量

2011年10月10日的GOTO大会上,谷歌的两位工程师发布了“Dart”;Dart是一种全新的编程语言,旨在帮助开发者构建Web应用程序。Dart 1.0于2013年11月14日发布。我们日常开发Flutter使用的就是Dart语言,所以我们有必要了解一下Dart语言的使用方法。

类型安全的语言

Dart 语言是类型安全的语言,但是由于其支持类型推断,因此大多数变量不需要显式地指定类型: 例如

 Dart
/// 初始化一个字符串
var name = 'Fulade';
/// Int类型
var year = 1995;
/// 浮点数类型
var antennaDiameter = 3.7;
/// 数组
var list = ['Java', 'Python', 'C++', 'C'];
/// 字典类型
var image = {
  'tags': ['土星'],
  'url': '//path/to/saturn.jpg'
};
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

变量

下面的示例代码将创建一个变量并将其初始化:

 Dart
var name = 'Fulade';
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

变量仅存储对象的引用。 这里名为 name 的变量存储了一个 String 类型对象的引用,'Fulade' 则是该对象的值。 name 变量的类型被推断为 String,但是你可以为其指定类型。 如果一个对象的引用不局限于单一的类型,可以将其指定为 Objectdynamic 类型。

 Dart
dynamic name = 'Bob';
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

除此之外你也可以指定类型:

 Dart
String name = 'Bob';
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

默认值

在 Dart 中,未初始化的变量拥有一个默认的初始化值:null。即便数字也是如此,因为在 Dart 中一切皆为对象,数字也不例外。

 Dart
int lineCount;
if(lineCount == null) {
    print("line is null");
}
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

Final 和 Const

如果你不想更改一个变量,可以使用关键字 final 或者 const 修饰变量,这两个关键字可以替代 var 关键字或者加在一个具体的类型前。一个 final 变量只可以被赋值一次;一个 const 变量是一个编译时常量(const 变量同时也是 final)。被final修饰的变量在第一次使用的时候被初始化。 下面的示例中我们创建并设置两个 final 变量:

 Dart
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

你不能修改一个 final 变量的值:

 Dart
name = 'Alice'; // Error: a final variable can only be set once.
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

使用关键字 const 修饰变量表示该变量为 编译时常量。如果使用 const 修饰类中的变量,则必须加上 static 关键字,即 static const(注意:顺序不能颠倒。在声明 const 变量时可以直接为其赋值,也可以使用其它的 const 变量为其赋值:

 Dart
const bar = 1000000; // 直接赋值 [Unit of pressure (dynes/cm2)]
const double atm = 1.01325 * bar; // 利用其它 const 变量赋值 (Standard atmosphere)
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

const 关键字不仅仅可以用来定义常量,还可以用来创建常量值,该常量值可以赋予给任何变量。你也可以将构造函数声明为 const 的,这种类型的构造函数创建的对象是不可改变的。

var foo = const [];
final bar = const [];
const baz = []; // 相当于 `const []` (Equivalent to `const []`)

如果使用初始化表达式为常量赋值可以省略掉关键字 const,比如上面的常量 baz 的赋值就省略掉了 const没有使用 finalconst 修饰的变量的值是可以被更改的,即使这些变量之前引用过 const 的值。

 Dart
foo = [1, 2, 3]; // foo 的值之前为 const [] (Was const [])
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */

常量的值不可以被修改:

 Dart
baz = [42]; // 报错:常量不可以被赋值。(Error: Constant variables can't be assigned a value.)
/* 给大家推荐一个面试刷题:Js中文网 - 全球前端挚爱的技术成长平台 https://www.javascriptc.com/special/leetcode */


作者:弗拉德
链接:https://juejin.im/post/6895684632944050184

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「画漫画的程序员」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

本文著作权归作者所有,如若转载,请注明出处

转载请注明:文章转载自「 Js中文网 · 前端进阶资源教程 」https://www.javascriptc.com

标题:【Flutter 1-7】Flutter教程Dart语言——变量

链接:https://www.javascriptc.com/4769.html

« 尤雨溪Vue源码——nextTick实现原理
微保 Serverless 实践之架构演进»
Flutter 中文教程资源

相关推荐

QR code