Skip to content

Instantly share code, notes, and snippets.

@kikuchy
Last active July 26, 2020 16:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kikuchy/1101d08c2dd6df8a78a415d10cbb3aa8 to your computer and use it in GitHub Desktop.
Save kikuchy/1101d08c2dd6df8a78a415d10cbb3aa8 to your computer and use it in GitHub Desktop.
enum ColorExpression {
rgb,
cymk,
}
abstract class ColorValue {
ColorExpression get expression;
}
class RgbColor extends ColorValue {
ColorExpression get expression => ColorExpression.rgb;
RgbColor(this.r, this.g, this.b);
final int r;
final int g;
final int b;
}
class CymkColor extends ColorValue {
ColorExpression get expression => ColorExpression.cymk;
CymkColor(this.c, this.y, this.m, this.k);
final int c;
final int m;
final int y;
final int k;
}
void doSomethingWithColor(ColorValue color) {
switch (color.expression) {
case ColorExpression.rgb:
final RgbColor rgb = color;
print(rgb.r);
break;
case ColorExpression.cymk:
final CymkColor cymk = color;
print(cymk.c);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment