blob: ba430f43d05451e32ca839dddb9bc3089bb69fec (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
enum shape { circle { int r; }, rect { int w; int h; }, dot };
int area(shape* s) {
switch (s) {
case circle(r): return r * r * 3;
case rect(w, h): return w * h;
case dot: return 0;
}
return -1;
}
fn main() {
shape* s = shape.circle(3);
put_n(area(s)); put_c(10);
free(d*s);
shape* t = shape.rect(2, 5);
put_n(area(t)); put_c(10);
free(d*t);
return 0;
}
|