Loading...
Loading...
Use switch expressions and pattern matching where appropriate
npx skill4agent add dart-lang/skills dart-use-pattern-matchingsealed>=<=&&||_...switch (value) { pattern => expression, }switch (value) { case pattern: statements; }break||pattern1 || pattern2&&pattern1 && pattern2==!=<><=>=aspattern as Type?pattern?!pattern!var nameType name_[pattern1, pattern2]......var rest{"key": pattern}(pattern1, named: pattern2):var nameClassName(field: pattern)ClassName:var fieldvar x:var ywhen condition_defaultsealeddart analyze_var data = {
'user': ['Lily', 13],
};if (data case {'user': [String name, int age]}) {
print('User $name is $age years old.');
} else {
print('Invalid JSON structure.');
}sealed class Shape {}
class Square implements Shape {
final double length;
Square(this.length);
}
class Circle implements Shape {
final double radius;
Circle(this.radius);
}
// Switch expression guarantees exhaustiveness due to `sealed` modifier.
double calculateArea(Shape shape) => switch (shape) {
Square(length: var l) => l * l,
Circle(:var radius) => math.pi * radius * radius,
};var (a, b) = ('left', 'right');
(b, a) = (a, b); // Swap values
// Destructuring a function return
var (name, age) = getUserInfo(); whenswitch (shape) {
case Square(size: var s) || Circle(size: var s) when s > 0:
print('Valid symmetric shape with size $s');
case Square() || Circle():
print('Invalid or empty shape');
default:
print('Unknown shape');
}