DART2 Prima Plus - 教程 1
这是 DART 2 的入门教程,我将介绍基本设置、数据类型、条件语句和循环。
引言
如果我说 DART 在当今瞬息万变的编程世界中是一种新兴现象,那将是错误的。正如本文承诺的那样,我将让您更多地了解 DART 语言。对于本文,我将借鉴 DART 官方网站上的一些常用文本,因为这些信息,例如关键字的类型或内置类型,是恒定的。为使本文符合规定,我将确保提供适当的出处。
这是本系列的第一个教程。希望在几周内还会有更多内容。
安装
您需要 **DART SDK** 和一个您选择的代码编辑工具来编写代码。我推荐 Visual Studio Code,因为它轻量级,并且如果您安装了 Flutter 和 Dart 扩展,它就内置了对 Dart 的支持(因为 Flutter 编码的基础语言是 Dart),它还提供了智能感知等功能。
要安装 **DART SDK**,您可以按照 [链接] 中提到的步骤进行。如果您只关注 DART;您只需要下载 Flutter SDK,Dart SDK 就在此路径 bin\cache\dart-sdk 下。
要在 Visual Studio Code 中安装 Flutter 和 Dart 扩展,请打开命令面板,方法是选择“视图”->“命令面板”选项或按下 Ctrl+Shift+P。出现搜索栏后,您需要输入“Extensions: Install Extensions”。分别搜索 Flutter 和 Dart 并进行安装。请确保在解压 DART SDK 到您的 PC 后再执行此步骤。
如果您不想安装任何东西,DART 团队提供了 DartPad,您可以在其中编写小程序来检查您的逻辑。对于本教程,您可以轻松地使用 DartPad 编写和编译您的代码。
基本结构
Dart 语言几乎内置了所有用于中断式编码的特性和编程结构,它是一种完全面向对象的编程语言,其语法结构类似于 C++、C#。完整的语言规范可在 此处获取。从 PDF 中,我可以提取更多相关的 Dart 定义。
引用Dart 是一种类式、单继承、纯面向对象的编程语言。Dart 是可选类型的(19)并支持具名泛型。每种对象的运行时类型都表示为类 Type 的一个实例,可以通过调用类 Object(Dart 类层次结构的根)中声明的 getter runtimeType 来获取。Type 类是 Dart 类层次结构的根。
在创建您的第一个程序之前,您应该了解两件事:首先是关键字的类型,其次是内置数据类型。
abstract | do | import | 超棒 |
为 | dynamic | in | switch |
assert | else | 接口 | sync* |
async | enum | is | this |
async* | export | library |
|
await | external | mixin | true |
break | extends | new | try |
大小写 | factory | null | typedef |
catch | false | operator | var |
类 | final | part | void |
const | finally | rethrow | while |
continue | for | return | 用 |
covariant | get | set | yield |
默认 | if | static | yield* |
deferred | implements |
内置数据类型
- 数字
- 字符串
- 布尔值
- 列表(也称为数组)
- 映射
- runes(用于在 `
string
` 中表示 Unicode 字符) - 符号
教程范围
尽管 **DART** 是一种功能齐全的语言,包含大量特性和功能,但对于本文,我将限制我的范围,只讨论以下几点:
- 任务#1 基本程序创建
- 任务#2 使用基本数据类型,包括 `
numbers
`、`strings
` 和 `enums
`。`List
` 和 `Map
` 将有单独的教程。 - 任务#3 `
IF ELSE
` 和 `SWITCH
` - 任务#4 使用 `
for
`、`while
`、`do-while
` 进行循环
项目创建
尽管如果您从 JetBrain 安装了 IntelliJ Idea ,它会提供内置模板来创建 Dart 控制台应用程序,否则创建基于 DART 的项目非常简单。请遵循以下步骤。我将 Visual Studio Code 用作我的编码编辑器。
- 在您的计算机上创建一个文件夹,您想在其中创建项目,文件夹名称将是项目名称。
- 在项目文件夹内创建两个名为 bin 和 lib 的文件夹。(请确保文件夹名称为小写。)
- bin 文件夹将包含您的代码文件
- lib 文件夹将包含您想在整个项目中使用到的文件,我将在本文后面再回到这一点。
- 在项目文件夹的根目录中创建一个名为 pubspec.yaml 的新文件,并在其中添加以下代码:
name: darttutorial1 description: New Tutorial series for Dart
- 这里的 `name` 对应项目名称,为了简单起见,您可以在此处使用项目文件夹名称。
- 这里的 `description` 对应项目基本信息。
- 保存 pubspec.yaml 文件后,Studio 会自动在 root 文件夹中创建 pubspec.lock 和 .package 文件。
- 现在您已准备好大展身手了。
Using the Code
任务 # 1 基本程序创建
- 与 C++ 一样,Dart 程序的入口点也是 `
main()
` 函数。 - 现在,通过右键单击文件夹并点击 **新建文件**,在 bin 文件夹中添加 main.dart 文件,并将其命名为 main.dart。
- 将以下代码添加到文件中:
void main() { print ('Hello Dart'); }
- `print` 函数用于将提供给调试控制台终端的任何内容打印出来。
- 如果一切设置正确,按下 Ctrl+F5,您将在输出终端中看到“'Hello Dart'”。要打开 VS Code 中的 `DEBUG CONSOLE` 终端,请使用 **CTRL + `** (反引号)
- 这样我们就完成了 **任务#1**。
任务#2 使用基本数据类型,包括数字、字符串和布尔值
**注意(来自 Dart 网站):** 您可以放入变量中的所有内容都是一个对象,每个对象都是一个类的实例。即使是数字、函数和 `null` 也是对象。所有对象都继承自 Object 类。未初始化的变量的初始值为 `null`。即使是具有数字类型的变量,最初也为 `null`。
- 让我们检查基本数据类型,首先是数字,主要组成部分是 `int`(用于整数值,范围从 -263 到 263 - 1)和 `double`(用于浮点值)。它们都是 `num` 对象的子类型。num 对象。
- 让我们对 `int` 和 `double` 做一些操作,我将确保代码具有自解释性。
void main() { print ('testing integer functionality'); int myInt = 4; myInt += 10; assert(myInt == 14);// Should not throw error print ('testing double functionality'); double myDob = 4.2; myDob += 10.2; assert(myDob == 14.4);// Should not throw error print ('integer and double test passed'); }
- 现在让我们专注于 `Enums`,`enum`s 类似于 C++/C# 中的枚举,它们是命名的 `const` 标识符,它会自动为第一个 `enum` 分配零,然后相应地递增。
- 让我们做一些使用 `enum`s 的编程。
enum NaturalNumbers { Zero,One,Two } void main() { print(NaturalNumbers.Zero); assert(NaturalNumbers.Zero.index == 0);// Should not throw error print(NaturalNumbers.One); assert(NaturalNumbers.One.index == 1);// Should not throw error print(NaturalNumbers.Two); assert(NaturalNumbers.Two.index == 2);// Should not throw error }
- 最后但最重要的是 `String`。请注意,`String` 中的 ‘
S
’ 是大写的,如果您使用小写,Dart 编译器将无法识别该语法。 `String` 用于操作和存储文本。我们可以使用单引号('
)和双引号("
)来存储文本。 - 让我们做一些使用 `String` 的编程。
void main() { String name = "Dart Language"; String usage = " Used in Mobile, Web and Virtual Machine"; print(name+usage); // should not throw error assert(name+usage == 'Dart Language Used in Mobile, Web and Virtual Machine'); //-- string interpolation var name1 = "${name} is next emerging language"; print(name1); assert(name1 == 'Dart Language is next emerging language'); // should not throw error }
- 类型转换,使用 `toString()` 将任何 `number` 转换为 `String`,并使用 `parse` 函数从 `String` 转换为 `number`(示例来自 Dart 网站)。
// String -> int var one = int.parse('1'); assert(one == 1); // String -> double var onePointOne = double.parse('1.1'); assert(onePointOne == 1.1); // int -> String String oneAsString = 1.toString(); assert(oneAsString == '1'); // double -> String String piAsString = 3.14159.toStringAsFixed(2); assert(piAsString == '3.14');
- 这样我们就完成了 **任务#2**。
任务#3 IF ELSE 和 SWITCH
`IF`-`ELSE` 语句用于我们需要在两个选择之间做出一个选择的情况,即结果要么是 `TRUE` 要么是 `FALSE`。如果我们从多个选择中选择一个,并且所有选择通常都预先知道,则使用 `SWITCH`。让我们编写程序来检查这两种功能。
enum NaturalNumbers { Zero,One,Two,Three }
void main()
{
bool DoYouLiveOnEarth = true;
// Check for TRUE condition
if(DoYouLiveOnEarth)
print("Yes I live on Earth");
print('Moved to Mars by tesla ');
DoYouLiveOnEarth = false;
// Check for FALSE condition
if(DoYouLiveOnEarth == false)
print("no Moved to Mars");
NaturalNumbers naturalNumbers = NaturalNumbers.Two;
// Check for Switch condition, here we set naturalNumbers = NaturalNumbers.Two
switch (naturalNumbers) {
case NaturalNumbers.Zero: print("you are using ${naturalNumbers}"); break;
case NaturalNumbers.One: print("you are using ${naturalNumbers}"); break;
case NaturalNumbers.Two: print("you are using ${naturalNumbers}"); break;
case NaturalNumbers.Three: print("you are using ${naturalNumbers}"); break;
default: break;
}
}
这样我们就完成了 **任务#3**。
任务#4 使用 for, while, do-while 进行循环
`For` 循环在 `end` 条件通常预先知道时执行,它为 `For` 循环运行的变量的递增和递减提供了现成的解决方案。而在 `while` 循环的情况下,我们无法提前知道结果,这取决于块内编写的逻辑。让我写一个小程序来检查它们在 Dart 中的用法。
void main()
{
print("For loop");
// print hello 3 times
for(int i=0;i<3;i++){
print("Hello ${i}");
}
// this also print hello 3 times
print("WHILE loop");
int i=0;
bool breakCondition = false;
while(breakCondition== false)
{
print("Hello ${i}");
// set breakCondition to TRUE, for completing the
// loop when value of i reached 3
if(++i>=3) breakCondition = true;
}
}
这样我们就完成了 **任务#4** 和本教程的结尾。如果您有任何问题,请在链接的消息板上发布,让我知道。
尽管本文没有提供下载,但您仍然可以 在此处克隆我的 github 项目。
关注点
- 语言规范: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf
- Dart 网站: https://dart.ac.cn/
- GitHub: https://github.com/thatsalok/FlutterExample/tree/master/darttutorial1
Flutter 教程
DART 系列
历史
- 2018 年 7 月 5 日 - 第一个版本