Wie werden die Variablen angepasst, die ein Lambda-Ausdruck in Vala erfasst?

Wie erfasst manthis nur schwach in einer anonymen Funktion?

Ich konnte in den Dokumenten nichts darüber finden, ob (oder wie) die von einer anonymen Funktion / einem Lambda-Ausdruck erfassten Variablen optimiert werden konnten. Das Problem ist, dass diese Funktionen scheinbar alle Variablen aus dem Stack-Frame erfassen, in dem sie zumindest standardmäßig erstellt wurden. Insbesondere erfassen sie immerthis, was problematisch ist, wenn sie für Signalhandler verwendet werden, da die Handler zu harten Verweisen auf @ werdthis dann verursacht wahrscheinlich Referenzzyklen.

Verfügt Vala über einen Mechanismus, mit dem verhindert werden kann, dass Lambdas harte Referenzen von @ erfassethis? Momentan erstelle ich für jeden Signalhandler eine neue Klasse, wie zBA.Handler, wobei ich nur einen schwachen Verweis auf das aktuelle @ behalthis vonA, auf das ich im Handler verweisen muss, aber ich denke, dies untergräbt die Vorteile von Lambda-Ausdrücken.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage