Dart(2.2) - 简单入门

2019-04-26  本文已影响0人  Longshihua

一个最基本的 Dart 程序

下面的代码使用了很多 Dart 中最基本的特性:

// 定义个方法。
printNumber(num aNumber) {
  print('The number is $aNumber.'); // 在控制台打印内容。
}

// 这是程序执行的入口。
main() {
  var number = 42; // 定义并初始化一个变量。
  printNumber(number); // 调用一个方法。
}

注意:无返回值的时候void写不写都OK

下面是上面代码中使用的一些可以应用到几乎所有 Dart 应用中的特性:

使用 // 表示后面的文字都是注释。 另外,你还可以使用/* … */

一种类型,Dart 语言有自己的内嵌类型,如:String, List, bool 是另外几种类型。

一个数字字面量。数字字面量是编译时常量。

一种打印内容的方法。

字符串插值:在字符串字面量中引用变量或者表达式,也可以使用${expression}

Dart 程序执行的入口方法,每个程序都需要一个这样的方法。 更多详细 The main() function.

一种不指定类型声明变量的方式。

注意: 我们的代码准守 Dart 代码样式中的规则。 例如: 我们使用两个空格来缩进代码。

重要的概念

在学习 Dart 的时候,请牢记下面一些事实和概念:

关键字(Keywords)

下表是Dart 中的关键字

屏幕快照 2019-03-27 上午10.21.01.png

应该避免使用这些关键字作为标识符,然而,如果有需要,关键词中带有上标的可以作为标识符

所以其他单词都是保留词。 你不能用保留词作为关键字。

变量(Variables)

下面是声明变量并赋值的示例:

var name = 'Bob';

变量是一个引用。上面名字为 name 的变量引用了 一个内容为 “Bob” 的String对象。

name变量的类型被自动推测为String,但是我们能够指定具体的类型来修改它的类型。如果对象并没有被限制为单一类型,可以指定为 Object 或者dynamic类型,更多了解design guidelines.

dynamic name = 'Bob';

另外一种可选方式就是显示声明变量类型

String name = 'Bob';

默认值(Default value)

Uninitialized variables have an initial value of null. Even variables with numeric types are initially null, because numbers—like everything else in Dart—are objects.

没有初始化的变量有一个默认值为null。甚至类型为数字的变量如果没有初始化其值也是null,因为数字(numeric)类型也是对象。

int lineCount;
assert(lineCount == null);

注意:在生产模式 assert() 语句被忽略了。在检查模式 assert(*condition*) 会执行,如果条件不为 true 则会抛出一个异常。详情请参考 Assert 部分。

Final和const

如果你从未打算修改一个变量,使用final 或者 const,而不是使用var或者类型。 一个final 变量只能赋值一次;一个 const变量是编译时常量。 (Const 变量是隐式的 final变量。) 顶级的final变量或者类中的final变量在第一次使用的时候初始化。

注意: 实例变量可以为final 但是不能是 constfinal实例变量必须在类的构造器中进行初始化,更多了解initializer list

下面是final变量的示例:

final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';

我们不能修改final变量的值

name = 'Alice'; // Error: a final variable can only be set once.

const变量为编译时常量,可以直接定义const和其值。 如果const变量是在类中,请定义为 static conststatic用于修饰成员变量,表示这个变量是属于类的,而不是属于对象的

const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere

const关键字不仅仅只用来定义常量。 有可以用来创建常量值, 还能定义构造函数为const类型的,这种类型的构造函数创建的对象是不可改变的。任何变量都可以有常量值。

var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`

我们能够在初始化表达式的时候省略const关键字,比如上面的baz

foo = [1, 2, 3]; // Was const []

所以我们不能修改baz

baz = [42]; // Error: Constant variables can't be assigned a value.

总结final和const的区别

final:表示单一赋值,final变量或字段必须初始化。 一旦赋值,就不能改变final变量的值。 final修饰变量

const 的含义在Dart中有点复杂和微妙。

const修饰值,可以在创建集合时使用它,例如const [1,2,3],以及构造对象(代替new),比如const Point(2,3)。这里,const意味着对象的整个深度状态可以在编译时完全确定,并且对象将被冻结并完全不可变。更多有关两者区别可以看 ''const'' and ''final'' keyword in Dart

对于更多信息有关于 const 来创建常量值 Lists, Maps, and Classes.

参考

Dart 语法预览

上一篇 下一篇

猜你喜欢

热点阅读