Dart 语言概述

// 导入(import)
// 导入核心库

//导入外部库
import 'package:test_api/test_api.dart';

// 导入文件
//import 'path/test.dart';

// 每个应用都有一个 main() 函数
void main() {
  // 你好,世界
  // 使用顶层函数 print() 来将一段文本输出显示到控制台
  print('Hello, World!');

  // 变量
  // 虽然 Dart 是代码类型安全的语言,但是由于其支持类型推断,因此大多数变量不需要显式地指定类型
  var name = '天空之城';
  var year = 1977;
  var antennaDiameter = 3.7;
  var flybyObjects = ['木星', '土星', '天王星', '海王星'];
  var image = {
    'tags': ['木星'],
    'url': '//path//ex.jpg',
  };

  // 流程控制语句
  // Dart 支持常用的流程控制语句
  if (year >= 2001) {
    print('21世纪');
  } else if (year >= 1901) {
    print('20世纪');
  }

  for (var object in flybyObjects) {
    print(object);
  }

  for (var month = 1; month <= 12; ++month){
    print(month);
  }

  while (year < 2016) {
    year += 1;
  }

  // 调用函数
  var result = fibonacci(20);
  print(result);

  // =>(胖箭头)
  // 这种简写语法用于仅包含一条语句的函数。该语法在将匿名函数作为参数传递时非常有用
  flybyObjects.where((name) => name.contains('土星')).forEach(print);

  // 注释
  // 这是一个普通的单行注释。
  /// 这是一个文档注释。
  /// 文档注释用于为库、类以及类的成员添加注释。
  /// 像 IDE 和 dartdoc 这样的工具可以专门处理文档注释。这很重要!
  /* 也可以像这样使用单斜杠和星号的注释方式 */

  // 使用类
  var voyager = Spacecraft('旅行者一号', DateTime(1977, 5, 5));
  voyager.describe();

  var voyager3 = Spacecraft.unlaunched('旅行者三号');
  voyager3.describe();

}

// 函数
// 建议为每个函数的参数以及返回值都指定类型
int fibonacci(int n) {
  if (n == 0 || n == 1) return n;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

// 类
// 展示了一个包含三个属性、两个构造函数以及一个方法的类。其中一个属性不能直接赋值,因此它被定义为一个 getter 方法(而不是变量)。
class Spacecraft {
  String name;
  DateTime launchDate;

  // 构造函数,带有可以直接为成员变量赋值的语法糖
  Spacecraft(this.name, this.launchDate) {
    // 实现初始化代码
  }

  // 命名构造函数,转发到默认构造函数
  Spacecraft.unlaunched(String name) : this(name, null);

  // 只读的非final的属性
  int get launchYear => launchDate?.year;

  // 方法
  void describe() {
    print('宇宙飞船:$name');
    if (launchDate != null) {
      int years = DateTime.now().difference(launchDate).inDays ~/ 365;
      print('发射时间:$launchYear ($years years ago)');
    } else {
      print('尚未发射!');
    }
  }

}

// 继承类,Dart支持单继承
class Orbiter extends Spacecraft {
  num altitude;
  Orbiter(String name, DateTime launchDate, this.altitude) : super(name, launchDate);
}

// Mixins, 它是一种在多个类层次结构中重用代码的方法
class Piloted {
  int astronauts = 1;
  void describeCrew() {
    print('宇航员人数:$astronauts');
  }
}

// 使用 Mixin 的方式继承这个类就可将该类中的功能添加给其它类
class PilotedCraft extends Spacecraft with Piloted {
  //
}

// 接口和抽象类
// Dart 没有 interface 关键字。相反,所有的类都隐式定义了一个接口。因此,任意类都可以作为接口被实现。
class MockSpaceship implements Spacecraft {
  //
}
// 创建一个被任意具体类扩展(或实现)的抽象类。抽象类可以包含抽象方法(不含方法体的方法)。
abstract class Describable {
  void describe();
  void describeWithEmphasis() {
    print('=========');
    describe();
    print('=========');
  }
}

// 异步
// 使用 async 和 await 关键字可以让你避免回调地狱(Callback Hell)并使你的代码更具可读性
const oneSecond = Duration(seconds: 1);
// ...
Future<void> printWithDelay(String message) async {
  await Future.delayed(oneSecond);
  print(message);
}
// async 和 await 关键字有助于使异步代码变得易于阅读
Future<void> createDescriptions(Iterable<String> objects) async {
  for (var object in objects) {
    try {
      var file = File('$object.txt');
      if (await file.exists()) {
        var modified = await file.lastModified();
        print('文件$object已经存在,它上一次修改时间为 $modified。');
        continue;
      }
      await file.create();
      await file.writeAsString('开始在此文件中描述 $object。');
    } on IOException catch (e) {
      print('不能为 $object 创建描述:$e');
    }
  }
}

// 也可以使用 async* 关键字,其可以为你提供一个可读性更好的方式去生成 Stream。
Stream<String> report(Spacecraft craft, Iterable<String> objects) async* {
  for (var object in objects) {
    await Future.delayed(oneSecond);
    yield '${craft.name} 由 $object 飞行。';
  }
}

// 异常
// 使用 throw 关键字抛出一个异常
if (astronauts == 0) {
  throw StateError('没有宇航员');
}
// 使用 try 语句配合 on 或 catch(两者也可同时使用)关键字来捕获一个异常
try {
  for (var object in flybyObjects) {
    var description = await File('$object.txt').readAsString();
    print(description);
  }
} on IOException catch (e) {
  print('无法描述该对象:$e');
} finally {
  flybyObjects.clear();
}

// 上述代码是异步的;同步代码以及异步函数中得代码都可以使用 try 捕获异常。

原文地址:https://www.cnblogs.com/parzulpan/p/12027572.html

时间: 2024-11-06 14:03:13

Dart 语言概述的相关文章

java语言概述

a语言概述  Java之父是谁?你造吗?  常见的JDK版本:  JDK1.4.2  JDK5  JDK7 (2)Java语言的特点  有很多小特点,重点有两个开源,跨平台 (3)Java语言是跨平台的  针对不同的操作系统,依靠不同的jvm来实现的. (4)Java语言的平台se,me,ee b:JDK,JRE,JVM的作用及关系(掌握) (1)作用  JVM:保证Java语言跨平台  JRE:Java程序的运行环境  JDK:Java程序的开发环境 (2)关系  JDK:JRE+工具  JR

第一章:C语言概述及如何上机运行C程序

第一章:C语言概述及如何上机运行C程序 让编程改变世界 Change the world by program C语言概述 C语言的发展过程 C语言是在 70 年代初问世的.一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言.同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书.通常简称为<K&R>,也有人称之为<K&R>标准.但是,在<K&R>中

C语言概述

[C语言]C语言概述 本文文件夹 为什么iOS开发要先学C语言? 一.C语言简史 二.C语言的特点 三.C语言能做什么? 四.C语言的版本号问题 说明:这个C语言专题,是学习iOS开发的前奏. 也为了让有面向对象语言开发经验的程序猿,可以高速上手C语言.假设你还没有编程经验,或者对C语言.iOS开发不感兴趣.请忽略 为什么iOS开发要先学C语言? iOS开发的核心语言是Objective-C,Objective-C是在C语言的基础加了一层面向对象的语法. 为了能够更好地掌握Objective-C

OC语言概述

1.OC语言概述 1>Foundation.h我们称之为主头文件, 主头文件中又拷贝了该工具箱中所有工具的头文件, 我们只需要导入主头文件就可以使用该工具箱中所有的工具, 避免了每次使用都要导入一个对应的头文件 工具箱的地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks 规律: 所有的主头文件

[JAVA_开课吧资源]第一周 Java语言概述、Java语言基础

主题一 Java语言概述 » JDK介绍及其基本组件 Sun公司利用Java开发工具箱(Java Development Toolkit ,JDK)发布Java的各个版本.JDK由开发和测试Java程序的独立程序集组成,它们都从命令行调用. [请点击查看更多内容 转自51CTO.com] » 使用CMD开发运行Java程序 代码文件的拓展名必须为.java,并且文件名应该与类的类名完全相同.编译一个程序是指使用编译器将源代码翻译成java字节码.下面的命令用来编译源代码文件welcome.jav

1-学习前言&amp;C语言概述

[C语言]01-学习前言&C语言概述 参考自 http://www.cnblogs.com/mjios/archive/2013/03/12/2956508.html#label2 C语言是我去年学的,学的还好吧,但是过了一个假期,感觉很多东西都忘了,说实说,我无法接受这个事实!这多少与去年没有接解一些网络笔记OneNote还有博客有关系,所以我决定花1~2个星期系统的复习整理一下. ----2016/11/5 一.C语言的特点 1.丰富的运算符 计算机的基本功能就是计算,因此一门程序设计语言的

OpenGL官方教程——着色器语言概述

OpenGL官方教程——着色器语言概述 OpenGL官方教程——着色器语言概述 可编程图形硬件管线(流水线) 可编程顶点处理器 可编程几何处理器 可编程片元处理器 语言 可编程图形硬件管线(流水线) 将 Pertransformed Vertices (每一个待转换顶点) 传人 Programmable Vertex Processor (可编程的顶点处理器) 得到 Transformed Vertices (转换的顶点) 将 Transformed Vertices (转换的顶点) 传入 Pr

swift介绍和语言概述

Swift是什么? Swift是苹果于WWDC 2014发布的编程语言,这里引用The Swift Programming Language的原话:  Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C, without the constraints of C compatibility. Swift adopts safe programm

第一章 C/C++语言概述 【代码手输一遍】

前情提要:如果不涉及面向对象的部分,那么C++语言和C语言的语法90%以上是一样的,只不过略有扩充,用起来更为方便而已. 查看gcc版本: E:\Program Files\MinGW\bin>gcc -v Reading specs from ./../lib/gcc/mingw32/3.4.5/specs Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --wi th-gnu-as --h