Skip to content

Instantly share code, notes, and snippets.

Last active December 21, 2022 09:42
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Pattern matching 6
abstract class _CarPart {
Engine(int cylinders, int horsepower);
Transmission(int gears, bool isManual);
class Car {
const Car(
this.model, {
final String model;
final List<CarPart> parts;
String get description => [
'These are the parts in a $model:',
for (final part in parts) '- ${_getDescriptionForCarPart(part)}',
'- And a whole bunch of other parts which I was too lazy to mention.',
String _getDescriptionForCarPart(CarPart part) => part.when(
engine: (v) => 'A ${v.cylinders} cylinder engine '
'which makes ${v.horsepower}hp.',
transmission: (v) => 'A ${v.gears} speed '
'${v.isManual ? 'manual' : 'automatic'} transmission.',
void main(List<String> args) => print(
const Car(
'Nissan Skyline GT-R',
parts: [
CarPart.Engine(cylinders: 6, horsepower: 300),
CarPart.Transmission(gears: 7, isManual: true),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment