blob: 27d23c36f8523860c1e42ce3ba995000a8deb945 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
namespace;
include rt;
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);
rt.put_n(area(s)); rt.put_c(10);
rt.free(s);
shape* t = shape.rect(2, 5);
rt.put_n(area(t)); rt.put_c(10);
rt.free(t);
}
|