RosettaCodeData/Task/Respond-to-an-unknown-method-call/Fantom/respond-to-an-unknown-method-call.fantom
Ingy döt Net b83f433714 tasks a-s
2013-04-10 23:57:08 -07:00

32 lines
565 B
Text

class A
{
public Void doit (Int n)
{
echo ("known function called on $n")
}
// override the 'trap' method, which catches dynamic invocations of methods
override Obj? trap(Str name, Obj?[]? args := null)
{
try
{
return super.trap(name, args)
}
catch (UnknownSlotErr err)
{
echo ("In trap, you called: " + name + " with args " + args.join(","))
return null
}
}
}
class Main
{
public static Void main ()
{
a := A()
// note the dynamic dispatch
a->doit (1)
a->methodName (1, 2, 3)
}
}