Als Experiment Aufruf (und weil ich anonyme Funktionen aus Daten von Benutzer zu erzeugen bin) lief ich den folgenden MATLAB-Code:Anonyme Funktionen selbst in MATLAB
h = @(x) x * x
h = @(x) x * x
h(3)
ans = 9
h = @(x) h(x) + 1
h = @(x)h(x)+1
h(3)
ans = 10
Im Grunde habe ich eine anonyme Funktion selbst nennen. Anstatt sich rekursiv zu verhalten, hat sich MATLAB die alte Funktionsdefinition gemerkt. Der Arbeitsbereich zeigt es jedoch nicht als eine der Variablen an, und das Handle scheint es auch nicht zu kennen.
Wird die alte Funktion hinter den Kulissen gespeichert, solange ich die neue bewahre? Gibt es irgendwelche "gotschas" mit dieser Art von Konstruktion?
Ich würde sagen, dass Design von sich aus ein "Gotcha" und eine schlechte Idee ist, da es so nicht intuitiv ist und so viel vor jedem anderen versteckt, der den Code betrachtet. – tmpearce