Dlaczego w AppleScript nie można zadeklarować odniesień do zmiennych lokalnych dla procedur obsługi?

Dlaczego nie możesz zadeklarować i używać odwołań do zmiennych, chyba że odnośna zmienna ma zasięg globalny? Proszę wyjaśnić pamięć środowiska wykonawczego lub strukturę obiektu, która prowadzi do następującego zjawiska:

Skrypt A kończy się niepowodzeniem:

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

foo()

Skrypt B powiedzie się:

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

Skrypt C powiedzie się:

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

foo()

Zobacz też:Jak skutecznie budować listę w programie obsługi w języku AppleScript? iDlaczego AppleScript nie może uczynić firstValue hasha w odwołaniu do typu w tym kodzie testowym?

questionAnswers(1)

yourAnswerToTheQuestion