2011-06-15 11:19:50 -07:00
|
|
|
|
|
|
|
|
2010-06-25 12:15:40 -07:00
|
|
|
type adder =
|
2011-06-15 11:19:50 -07:00
|
|
|
obj {
|
|
|
|
fn add() ;
|
|
|
|
};
|
2010-06-25 12:15:40 -07:00
|
|
|
|
|
|
|
obj leaf_adder(int x) {
|
2011-06-15 11:19:50 -07:00
|
|
|
fn add() { log "leaf"; log x; }
|
2010-06-25 12:15:40 -07:00
|
|
|
}
|
2011-06-15 11:19:50 -07:00
|
|
|
|
2010-06-25 12:15:40 -07:00
|
|
|
obj delegate_adder(adder a) {
|
2011-06-15 11:19:50 -07:00
|
|
|
fn add() { a.add(); }
|
2010-06-25 12:15:40 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
2011-06-15 11:19:50 -07:00
|
|
|
auto x = delegate_adder(delegate_adder(delegate_adder(leaf_adder(10))));
|
|
|
|
x.add();
|
2010-06-25 12:15:40 -07:00
|
|
|
}
|