Dart 新语言特性之模式匹配进入草案阶段

近期,Dart 项目组宣布模式匹配相关新特性进入草案阶段,本草案引入了不少新特性新语法,其中包括多值返回Multiple return values)、代数数据类型Algebraic datatypes)、解构Destructuring),switch表达式Switch expression)等等。

笔者前段时间正好也学了一点 Rust,非常喜欢它的模式匹配,Dart 引入这一特性我认为是非常明智的决定,相信这会使 Dart 语言的易用性得到进一步提升 :grinning:

以下是新特性的部分语法示例 :

// 通过 record(tuple)进行多值返回
(double, double) geoCode(String city) {
  var lat = // Calculate...
  var long = // Calculate...

  return (lat, long);
}

// 解构
var (lat, long) = geoCode('Aarhus');
print('Location lat:$lat, long:$long');

var list = [1, 2, 3];
var [a, b, c] = list;
print(a + b + c); // 6.

var map = {'first': 1, 'second': 2};
var {'first': a, 'second': b} = map;
print(a + b); // 3.

// 代数数据类型,类可以被switch识别,构造参数自动解析
double calculateArea(Shape shape) =>
  switch (shape) {
    case Square(length: l) => l * l;
    case Circle(radius: r) => math.pi * r * r;
  };


草案原文地址如下: