Description
This issue was originally filed by [email protected]
It would be nice to match a value against patterns with a terse syntax.
This is similar to 'switch' (and could possibly share the same syntax) but instead of exact-match, the semantics would be determined by the pattern used.
When the pattern is a RegExp, it would match strings that conform to it.
A Type would match instances of that type.
User classes should be able to implement their own pattern behaviour.
Any value without special pattern behaviour would match using ==
for example:
switch (value) {
match Exception: throw value;
match const RegExp('\s+') return 'whitespace';
match 42: return 'the answer';
default: return 'unrecognized';
}
There was some discussion here: https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thread/a3e75c24c6dd4f03/
A pattern might also be able provide values which can be bound to names (e.g. the Match object corresponding to a regexp match).