Case-modddels pattern matching
Let's continue with our Weather
example (find it here).
The super-sealed classes have additional "special" pattern matching methods that allow you to map between the different modddels. In our example, these methods are : mapWeather
, maybeMapWeather
and mapOrNullWeather
.
For Example :
weather.mapWeather(
sunny: (Sunny sunny) {},
rainy: (Rainy rainy) {},
);
weather.mapOrNullWeather(
rainy: (Rainy rainy) {},
);
weather.maybeMapWeather(
sunny: (Sunny sunny) {},
orElse: () {},
);
These methods can be used on all the super-sealed classes :
Super-sealed class
Case-Modddels you can map between
Weather
Sunny
- Rainy
ValidWeather
ValidSunny
- ValidRainy
InvalidWeather
InvalidSunny
- InvalidRainy
InvalidWeatherValue
InvalidSunnyValue
- InvalidRainyValue
For Example :
weather.mapValidity(
valid: (ValidWeather validWeather) {
// Using `mapWeather` on `ValidWeather`
validWeather.mapWeather(
sunny: (ValidSunny validSunny) {},
rainy: (ValidRainy validRainy) {},
);
},
invalid: (InvalidWeather invalidWeather) {
// Using `mapWeather` on `InvalidWeather`
invalidWeather.mapWeather(
sunny: (InvalidSunny invalidSunny) {},
rainy: (InvalidRainy invalidRainy) {},
);
},
);
Notice how the type of the callback parameters changes according to which super-sealed class the mapWeather
method is called on.
Last updated