Jump to content

Respond to an unknown method call: Difference between revisions

added Fantom example
No edit summary
(added Fantom example)
Line 125:
a they_can_too: "eat" and: "walk"
</lang>
 
=={{header|Fantom}}==
 
In Fantom, you can call methods statically or dynamically. Static calls to methods will be checked at compile time. Dynamic method calls (indicated by an <code>instance->method</code> syntax) are run through a "[http://fantom.org/doc/sys/Obj.html#trap trap]" method at run time, and can thus be caught:
 
<lang fantom>
class A
{
// override the 'trap' method, which catches dynamic invocations of methods
override Obj? trap(Str name, Obj?[]? args := null)
{
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->methodName (1, 2, 3)
}
}
</lang>
 
Output:
<pre>
$ fan unknown-method.fan
In trap, you called: methodName with args 1,2,3
</pre>
 
In normal usage, the trap method tries to locate the named method using reflection on the current class.
 
=={{header|J}}==
342

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.