前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dart 概览

Dart 概览

作者头像
前端GoGoGo
发布2019-07-01 15:58:02
7840
发布2019-07-01 15:58:02
举报

Dart是Google公司发布的网络编程语言,其诞生的目的是为了让广大C类OOP程序员们克服JavaScript那”复杂”的语言特性。

定义变量

用 泛型的 var, 或具体类型,如: int, bool 等。如

代码语言:javascript
复制
var name = 'Bob';

变量如果未被赋值,默认值是 null

定义常量

final 定义变量。如:

代码语言:javascript
复制
final a = 3;

const 还可以定义内容的不可变,如

代码语言:javascript
复制
var constantList = const [1, 2, 3];
// constantList[1] = 1; // Uncommenting this causes an error.

数据类型

数值型

num, int, double

字符串转数字

代码语言:javascript
复制
int.parse('1');
double.parse('1.2');

字符串

创建
代码语言:javascript
复制
'a';
"b";
'''
多行字符串1
多行字符串2
'''

字符串中用变量

代码语言:javascript
复制
var a = 3;
var str = '$a'; // $变量名

操作

  • 索引
    • .contains
    • .startsWith
    • .endsWidth
    • .indexOf
  • .substring(startIndex, endIndex) 子字符串
  • .toUpperCase, .toLowerCase
  • .trim
  • .replaceAll
  • .split 转数组

数组

代码语言:javascript
复制
var list = [1, 2, 3];
// 数组中只包含某种类型
var names = new List<String>();

Map

JavaScript 中的 Ojbect 用法基本一样。如:

代码语言:javascript
复制
var gifts = {
// Keys      Values
  'first' : 'partridge',
  'second': 'turtledoves',
  'fifth' : 'golden rings'
};

gifts['fourth'] = 'calling birds';

// 用泛型
var pages = <String, String>{
  'index.html': 'Homepage',
  'robots.txt': 'Hints for web robots',
  'humans.txt': 'We are people, not machines'
};

流程控制

if,switch,for 和 JavaScript 的写法是一模一样的。

函数

定义

代码语言:javascript
复制
返回值 函数名(参数类型:参数名, [可选参数]) {

}

// 可选命名参数
返回值 函数名({参数类型:参数名,参数类型:参数名,}) {

}

代码语言:javascript
复制
bool isNoble(int atomicNumber, [String xx]) {
  return _nobleGases[atomicNumber] != null;
}

只有一个表达式的方法,你可以选择 使用缩写语法:

代码语言:javascript
复制
=> expr 语法是 { return expr; } 形式的缩写

调用

代码语言:javascript
复制
xxx(3, 4);
xxx(a: 3, b: 4); // 指定参数名创制

执行入口

程序执行的入口 main()

包管理工具

pub。

引入包

代码语言:javascript
复制
import 'dart:io';
import 'package:mylib/mylib.dart'; // 安装的包里找
import 'package:utils/utils.dart';
import 'a.dart'; // 本地找

指定库前缀 来解决 两个库存在两个冲突的标识符的情况。如:

代码语言:javascript
复制
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// ...
Element element1 = new Element();           // Uses Element from lib1.
lib2.Element element2 = new lib2.Element();

导入部分

代码语言:javascript
复制
// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

定义一个包

代码语言:javascript
复制
library xx;

以下划线 (_) 开头的标识符只有在库 内部可见。

Class

代码语言:javascript
复制
class Point {
  num x; // 实例变量
  num y;
  num _z; // _ 开头是私有的
  static num d; 静态变量

  // 构造函数
  Point(num x, num y) {
    // There's a better way to do this, stay tuned.
    this.x = x;
    this.y = y;
  }

  // 实例函数
  num distanceTo(Point other) {
    var dx = x - other.x;
    var dy = y - other.y;
    return sqrt(dx * dx + dy * dy);
  }
}

main() {
  var point = new Point();
  point.x = 4;          // Use the setter method for x.
  assert(point.x == 4); // Use the getter method for x.
  assert(point.y == null); // Values default to null.
}

抽象类

代码语言:javascript
复制
abstract class Doer {
  void doSomething(); // 定义抽象方法。
}

// 实现
class EffectiveDoer extends Doer {
  void doSomething() {
    // ...Provide an implementation, so the method is not abstract here...
  }
}

也支持接口(implements),以及 mixins。

也支持重写+,-,*,/之类的操作符。

异步支持

asyncawait。和 JavaScript 的差不多。如:

代码语言:javascript
复制
checkVersion() async {
  var version = await lookUpVersion();
  if (version == expectedVersion) {
    // Do something.
  } else {
    // Do something else.
  }
}

Metadata(元数据)(注解)

元数据注解是以 @ 字符开头,后面是一个编译时 常量(例如 deprecated)或者 调用一个常量构造函数。

注意点

  • 语句结尾一定要带 ;

资源

  • Dart 语法预览
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义变量
  • 定义常量
  • 数据类型
    • 数值型
      • 字符串
        • 创建
      • 字符串中用变量
        • 操作
        • 数组
          • Map
          • 流程控制
          • 函数
            • 定义
              • 调用
                • 执行入口
                • 包管理工具
                  • 引入包
                    • 定义一个包
                    • Class
                    • 异步支持
                    • Metadata(元数据)(注解)
                    • 注意点
                    • 资源
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档