I was wondering why a new closure is created when assigning a derived class' function but not when assigning a base.
As you can see in the output below, each assignment creates a new pointer.
I need to change functions during execution, but only if they match the old one.
Code:
Code:
class A {
function memberfn() { }
}
class D extends A {
function memberfn() { }
}
function fn() {}
print("A.memberfn="+A.memberfn+" fn="+fn);
A.memberfn <- fn;
print("A.memberfn="+A.memberfn+" fn="+fn);
A.memberfn <- fn;
print("A.memberfn="+A.memberfn+" fn="+fn);
print("D.memberfn="+D.memberfn+" fn="+fn);
D.memberfn <- fn;
print("D.memberfn="+D.memberfn+" fn="+fn);
D.memberfn <- fn;
print("D.memberfn="+D.memberfn+" fn="+fn);
Output:
Code:A.memberfn=(function : 0x064E1050) fn=(function : 0x064DA0C0)
A.memberfn=(function : 0x064DA0C0) fn=(function : 0x064DA0C0)
A.memberfn=(function : 0x064DA0C0) fn=(function : 0x064DA0C0)
D.memberfn=(function : 0x064E1588) fn=(function : 0x064DA0C0)
D.memberfn=(function : 0x064D9FC0) fn=(function : 0x064DA0C0)
D.memberfn=(function : 0x064DFA18) fn=(function : 0x064DA0C0)
Thanks