Pattern matching cho phép khớp giá trị và destructure cùng lúc.
dart
switch (shape) {
case Circle(radius: var r) => print('Circle r=$r');
case Rectangle(width: var w, height: var h) => print('Rect ${w}x${h}');
}
// guard clause thêm điều kiện
case (int a, int b) when a > b => print('$a lớn hơn $b');
// pattern dùng được cả trong khai báo biến
var (x, y) = getPoint();So với chuỗi if/else thì cách viết này declarative hơn hẳn.