Methods can be denoted with the dynamic
keyword to make them (re-)bindable:
class Main { static dynamic function test() { return "original"; } static public function main() { trace(test()); // original test = function() { return "new"; } trace(test()); // new } }
The first call to test()
invokes the original function which returns the String
"original"
. In the next line, test
is assigned a new function. This is precisely what dynamic
allows: Function fields can be assigned a new function. As a result, the next invocation of test()
returns the String
"new"
.
Dynamic fields cannot be inline
for obvious reasons: While inlining is done at compile-time, dynamic functions necessarily have to be resolved at runtime.