tài liệu AppleScript cho thấy đoạn mã sau để xây dựng một cách hiệu quả một danh sách:Làm thế nào để bạn xây dựng một danh sách hiệu quả trong một trình xử lý trong 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
Lưu ý việc sử dụng một tài liệu tham khảo rõ ràng. Đây hoạt động tốt ở cấp cao nhất của một kịch bản hay trong một handler chạy rõ ràng, nhưng nếu bạn chạy mã chính xác cùng nguyên văn trong xử lý khác như vậy:
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()
nó phá vỡ, năng suất một thông báo lỗi nói rằng, "Can 't làm bigList thành tham chiếu kiểu. " Tại sao điều này phá vỡ, và cách chính xác để xây dựng một danh sách hiệu quả trong một trình xử lý khác với run() là gì?
Sự cố tương tự này gặp phải (không có câu trả lời thỏa đáng) ở đây: http://stackoverflow.com/questions/3569847/why-cant-applescript-make-firstvalue-of-hash-into-type-reference-in-this -test-c? rq = 1 – 108
Và hữu ích hơn là: http://stackoverflow.com/questions/15777321/why-in-applescript-cant-you-declare-references-to-variables-local-to-handlers – 108