Respond to an unknown method call: Difference between revisions
Add SuperCollider example
m (→{{header|Io}}) |
(Add SuperCollider example) |
||
Line 1,092:
True
slate[2]></lang>
=={{header|SuperCollider}}==
<lang SuperCollider>
Ingorabilis {
tell {
"I told you so".postln;
}
find {
"I found nothing".postln
}
doesNotUnderstand { |selector ... args|
"Method selector '%' not understood by %\n".postf(selector, this.class);
"Giving you some good arguments in the following".postln;
args.do { |x| x.postln };
"And now I delegate the method to my respected superclass".postln;
super.doesNotUnderstand(selector, args)
}
}
</lang>
Usage:
=={{header|Smalltalk}}==
Line 1,144 ⟶ 1,170:
There is a utility method for exactly the above (it catches only #fooBar to the original receiver):
<lang smalltalk>anObject perform:#fooBar ifNotUnderstood:[ ...some alternative code and return value... ].</lang>
<lang SuperCollider>
i = Ingorabilis.new;
i.tell; // prints "I told you so"
i.find; // prints ""I found nothing"
i.think(1, 3, 4, 7);
</lang>
The latter answers:
<lang SuperCollider>Method selector 'think' not understood by Ingorabilis
Giving you some good arguments in the following
1
3
4
7
And now I delegate the method to my respected superclass
ERROR: Message 'think' not understood.
RECEIVER:
Instance of Ingorabilis { (0x1817b1398, gc=D4, fmt=00, flg=00, set=00)
instance variables [0]
}
<...></lang>
=={{header|Tcl}}==
|