編集

Dart 3

Google I/O 2023 で、Dart 3 の正式リリースが発表。

Dart は Flutter でしか使う機会はなく matsuri 社では全く使っていませんが、個人的な認識として Flutter ほど Android、iOS それぞれに依存した機能にまで対応したクロスプラットフォームフレームワークは存在せず、利便性は現状一強であると思っているので、リリースを少し取り上げます。

#100% sound null safety

Dart は約 4 年をかけて、完全に Null safety になりました。これにより Null Pointer Exceptions などのランタイムエラーの回避や、コンパイル時に Null がないことを前提として最適化が可能になります。

Dart では 2 系から Null safety のモードを切り替えられるようにするなど段階的な移行を行なっており、既に人気な上位 1000 位までのパッケージの 99%は Null safaty に対応をしています。

#パターンマッチング

Rust などのパターンマッチと一緒です。次のように記述します。

dart
// seald修飾子によって、これは閉じた型族のルートになり網羅チェックが有効になる
sealed class Shape {}

class Square implements Shape {
  final double length;
  Square(this.length);
}

class Circle implements Shape {
  final double radius;
  Circle(this.radius);
}

// switchが式で利用できるようになった。
double calculateArea(Shape shape) => switch (shape) {
  Square(length: var l) => l * l,
  Circle(radius: var r) => math.pi * r * r
};

#参考文献

編集