4.4.3 Dynamic
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.