65.9K
CodeProject 正在变化。 阅读更多。
Home

DART2 Prima Plus - 教程 1

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2018 年 7 月 5 日

CPOL

6分钟阅读

viewsIcon

16051

这是 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 throw
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. 任务#1 基本程序创建
  2. 任务#2 使用基本数据类型,包括 `numbers`、`strings` 和 `enums`。`List` 和 `Map` 将有单独的教程。
  3. 任务#3 `IF ELSE` 和 `SWITCH`
  4. 任务#4 使用 `for`、`while`、`do-while` 进行循环

项目创建

尽管如果您从 JetBrain 安装了 IntelliJ Idea ,它会提供内置模板来创建 Dart 控制台应用程序,否则创建基于 DART 的项目非常简单。请遵循以下步骤。我将 Visual Studio Code 用作我的编码编辑器。

  1. 在您的计算机上创建一个文件夹,您想在其中创建项目,文件夹名称将是项目名称。
  2. 在项目文件夹内创建两个名为 binlib 的文件夹。(请确保文件夹名称为小写。)
    • bin 文件夹将包含您的代码文件
    • lib 文件夹将包含您想在整个项目中使用到的文件,我将在本文后面再回到这一点。
  3. 在项目文件夹的根目录中创建一个名为 pubspec.yaml 的新文件,并在其中添加以下代码:
    	    name: darttutorial1
    	    description: New Tutorial series for Dart	
    • 这里的 `name` 对应项目名称,为了简单起见,您可以在此处使用项目文件夹名称。
    • 这里的 `description` 对应项目基本信息。
  4. 保存 pubspec.yaml 文件后,Studio 会自动在 root 文件夹中创建 pubspec.lock.package 文件。

  5. 现在您已准备好大展身手了。

Using the Code

任务 # 1 基本程序创建

  1. 与 C++ 一样,Dart 程序的入口点也是 `main()` 函数。
  2. 现在,通过右键单击文件夹并点击 **新建文件**,在 bin 文件夹中添加 main.dart 文件,并将其命名为 main.dart
  3. 将以下代码添加到文件中:
    void main()
    {
      print ('Hello Dart');
    }

  4. `print` 函数用于将提供给调试控制台终端的任何内容打印出来。
  5. 如果一切设置正确,按下 Ctrl+F5,您将在输出终端中看到“'Hello Dart'”。要打开 VS Code 中的 `DEBUG CONSOLE` 终端,请使用 **CTRL + `** (反引号)
  6. 这样我们就完成了 **任务#1**。

任务#2 使用基本数据类型,包括数字、字符串和布尔值

**注意(来自 Dart 网站):** 您可以放入变量中的所有内容都是一个对象,每个对象都是一个的实例。即使是数字、函数和 `null` 也是对象。所有对象都继承自 Object 类。未初始化的变量的初始值为 `null`。即使是具有数字类型的变量,最初也为 `null`。

  1. 让我们检查基本数据类型,首先是数字,主要组成部分是 `int`(用于整数值,范围从 -263 到 263 - 1)和 `double`(用于浮点值)。它们都是 `num` 对象的子类型。num 对象。
  2. 让我们对 `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');
    }	   

  3. 现在让我们专注于 `Enums`,`enum`s 类似于 C++/C# 中的枚举,它们是命名的 `const` 标识符,它会自动为第一个 `enum` 分配零,然后相应地递增。
  4. 让我们做一些使用 `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
    }

  5. 最后但最重要的是 `String`。请注意,`String` 中的 ‘S’ 是大写的,如果您使用小写,Dart 编译器将无法识别该语法。 `String` 用于操作和存储文本。我们可以使用单引号(')和双引号(")来存储文本。
  6. 让我们做一些使用 `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
    }

  7. 类型转换,使用 `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');	
  8. 这样我们就完成了 **任务#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 项目。

关注点

Flutter 教程

  1. Flutter 入门:教程 #1
  2. Flutter 入门:教程 2 – StateFulWidget

DART 系列

  1. DART2 Prima Plus - 第二课 - LIST

历史

  • 2018 年 7 月 5 日 - 第一个版本
© . All rights reserved.