Warum können Sie in AppleScript keine Referenzen auf Variablen deklarieren, die für Handler lokal sind?

Warum können Sie keine Referenzen auf Variablen deklarieren und verwenden, es sei denn, die referenzierte Variable ist global gültig? Bitte erläutern Sie den Laufzeitspeicher oder die Objektstruktur, die zu folgendem Phänomen führen:

Skript A schlägt fehl:

on foo()        
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end foo

foo()

Skript B ist erfolgreich:

on run
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end run

Skript C ist erfolgreich:

on foo()        
    global l
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end foo

foo()

Siehe auch:Wie kann eine Liste in einem Handler in AppleScript effizient erstellt werden? undWarum kann AppleScript FirstValue von Hash in diesem Testcode nicht zur Typreferenz machen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage