Dart语言之旅(01)

xiaoxiao2021-02-28  20

本页向您展示了如何使用每个主要的Dart特性,从变量和运算符到类和库,假定您已经知道如何用另一种语言编程。 要了解有关Dart核心库的更多信息,请参阅Dart Library之旅。无论何时您想了解有关语言功能的更多详细信息,请参阅Dart语言规范。

一个基本的dart程序

以下代码使用了Dart最基本的许多功能:

// 定义一个函数. printInteger(int aNumber) { print('The number is $aNumber.'); // 打印到工作台 } //这是应用程序开始执行的地方. main() { var number = 42; // 声明并初始化一个变量 printInteger(number); // 调用一个函数. }

以下是适用于所有(或几乎所有)Dart应用程序的写法:

// 单行注释 //此外dart还支持多行注释和文档注释,详情见后面 int //int类型,其他一些内置类型是String,List bool 42 //数字,数字是一种编译时常量 print() //一种很方便的打印方法 '......' or"......" //这两种都是表示字符串 $variableName (or ${expression}) //字符串插值:在字符串文字中包含一个变量或表达式的字符串。有关更多信息,请参阅字符串。 main() //一个应用程序执行开始的特殊的、必须的函数,详情查看main函数 var //声明变量但不指定类型

重要概念

当你了解Dart语言时,要牢记这些事实和概念:

你可以放在变量中的所有东西都是一个对象,每个对象都是一个类的实例。即使是数字,功能, null也是对象。所有对象都从Object类继承。虽然Dart是强类型的,但类型注释是可选的,因为Dart可以推断类型。在上面的代码中,number 被推断为是类型的int。当你想明确地说没有类型时, 使用特殊类型dynamic。Dart支持泛型类型,如List(整数列表)或List(任何类型的对象列表)。Dart支持顶层函数(如main()),以及与类或对象绑定的函数(分别为静态方法和实例方法)。你也可以在函数中创建函数(嵌套函数或局部函数)。同样,Dart支持顶级变量以及绑定到类或对象(静态变量和实例变量)的变量。实例变量有时称为字段或属性。与Java,dart不具备关键字public,protected和private。如果标识符以下划线(_)开头,则它的库是私有的。有关详细信息,请参阅 库和可见性。标识符可以以字母或下划线(_)开头,然后是这些字符和数字的任意组合。有时候,重要的是某件事是一种表达式还是一种 声明,所以这两个词的确切含义很有帮助。Dart工具可以报告两种问题:warnings 和errors。警告只是表明您的代码可能无法正常工作,但它们不会阻止您的程序执行。错误可以是编译时或运行时。编译时错误导致代码无法执行; 运行时错误导致 代码执行时引发异常。

关键词

下表列出了Dart语言特别处理的关键词。

abstractdoimportsuperabstract1doimport 1superas 1dynamic 1inswitchassertelseinterface 1sync*2async 2enumisthisasync 2export 1library 1throwawait 2external 1mixin 1truebreakextendsnewtrycasefactory 1nulltypedef 1catchfalseoperator 1varclassfinalpart 1voidconstfinallyrethrowwhilecontinueforreturnwithcovariant 1get 1set 1yield* 2defaultifstatic 1yield* 2deferred 1implements 1

1带上标1的单词是内置标识符。 避免使用内置标识符作为标识符。 如果您尝试为类或类型名称使用内置标识符,则会发生编译时错误。 2带上标2的单词是较新的,与Dart 1.0版本发布后添加的异步支持相关的有限保留字。 您不能使用async,await或yield作为用async,async *或sync *标记的任何函数体中的标识符。 有关更多信息,请参见异步支持

关键字表中的所有其他字都是保留字。 您不能使用保留字作为标识符

变量

以下是创建变量并初始化变量的示例:

var name ='Bob';

变量存储的是引用,命名为name的变量存储的是 值为"Bob"的字符创的一个引用 name变量的类型被推断为String,但您可以通过指定它来更改该类型。 如果对象不限于单一类型,请遵循设计指南指定对象或动态类型

dynamic name ='Bob';

另一种选择是显式声明将被推断的类型

String name = 'Bob';

默认值

未初始化的变量的初始值为null。即使数字类型的变量最初为null,因为数字 - 和Dart中的其他所有数据一样 - 都是对象。

int lineCount; assert(lineCount == null);

注意:assert()产品代码中 的调用被忽略。在开发过程中, 除非条件为真,否则会引发异常。有关详细信息,请参阅Assert。assert(condition)

Final和const

如果你从不打算改变一个变量,使用final或者const,而不是var或者其他类型。最终的变量只能设置一次; 一个const变量是一个编译时常量。(Const变量隐式final 。)final的顶层或者class变量在它第一次被使用时被初始化。

注意: 实例变量可以final但不是const。

以下是创建和设置最终变量的示例:

final name = 'Bob'; // 没有类型声明 // name = 'Alice'; // 取消注释会导致UC哦呜 final String nickname = 'Bobby';

将const用于想要成为编译时常量的变量。 如果const变量处于类级别,则将其标记为静态常量。 在声明该变量的位置,将该值设置为编译时常量,例如数字或字符串文字,常量变量或常数上算术运算的结果:

const bar = 1000000; // 压力单位(dynes/cm2) const double atm = 1.01325 * bar; // 标准大气压

该const关键字不只是声明常数变量。您也可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以有一个常量值。

// Note: [] 创建一个空的list // const [] 创建一个空的, 一成不变的list (简写为EIL). var foo = const []; // foo 当前是一个 EIL(empty immutabe list). final bar = const []; // bar 将永远是 EIL. const baz = const []; // baz 是一个编译时常量 EIL. // You can change the value of a non-final, non-const variable, // even if it used to have a const value. foo = []; // You can't change the value of a final or const variable. // bar = []; // Unhandled exception. // baz = []; // Unhandled exception.
转载请注明原文地址: https://www.6miu.com/read-1700220.html

最新回复(0)