Il Elenco & Strumenti di registrazione L'aggiunta di script fornisce intersection of listA and listB
(tra gli altri bit di terminologia).
Non esiste una "primitiva" built-in per calcolare un'intersezione di lista. Di solito si userebbe uno o più loop per controllare ogni elemento di una lista contro l'altro. Questo può essere semplificato (e velocizzato 1 ) un po 'usando uno degli operatori is in
/ is contained by
/ contains
(o una sua negazione):
set listA to {"red", "green", "blue"}
set listB to {"green", "blue"}
to intersection of listA against listB
local newList, a
set newList to {}
repeat with a in listA
set a to contents of a -- dereference implicit loop reference
if {a} is in listB then set end of newList to a
end repeat
newList
end intersection
intersection of listA against listB --> {"green", "blue"}
1 L'operatore is in
ei suoi parenti sono implementati dall'ambiente di runtime AppleScript nel codice di livello inferiore dove vengono eseguiti molto più velocemente rispetto al normale codice AppleScript interpretato.
Per inciso, i gestori che utilizzano parametri etichettati hanno un insieme limitato di termini che possono essere utilizzati per le etichette. Ad esempio, intersection of listA and listB
non è possibile come gestore definito dall'utente poiché and
non è un'etichetta riconosciuta. Vedi Guida della lingua AppleScript sezione gestori con parametri etichettati per un elenco di etichette valide. Le estensioni di applicazioni e OSA possono definire le proprie terminologie (ad esempio, l'elenco e Record OSAX fornisce questa sintassi esatta), ma i gestori definiti dall'utente non sono così flessibili. Di solito uso solo i parametri posizionali ( handlerName(param1, param2, …)
) invece di provare a fare in modo che le invocazioni dei miei gestori assomiglino alla prosa.