Как эффективно построить список в обработчике в AppleScript?
Документация AppleScript предлагает следующий код для эффективного построения списка:
set bigList to {}
set bigListRef to a reference to bigList
set numItems to 100000
set t to (time of (current date)) --Start timing operations
repeat with n from 1 to numItems
copy n to the end of bigListRef
end
set total to (time of (current date)) - t --End timing
Обратите внимание на использование явной ссылки. Это прекрасно работает на верхнем уровне скрипта или в явном обработчике выполнения, но если вы выполняете тот же самый точный код в другом обработчике, например так:
on buildList()
set bigList to {}
set bigListRef to a reference to bigList
set numItems to 100000
set t to (time of (current date)) --Start timing operations
repeat with n from 1 to numItems
copy n to the end of bigListRef
end
set total to (time of (current date)) - t --End timing
end buildList
buildList()
он ломается, выдавая сообщение об ошибке "Можно'сделать из bigList ссылку на тип. " Почему это ломается, и как правильно построить список в обработчике, отличном от run ()?