La Lista Y las Herramientas de Registro de secuencias de comandos ofrece a intersection of listA and listB
(entre otros bits de la terminología).
No hay ninguna integrada en el "primitivo" para el cálculo de una lista de intersección. Generalmente uno podría usar uno o más de los bucles de verificación de cada elemento de una lista en contra de la otra. Esto puede ser simplicado (y aceleró1) un poco por el uso de uno de los is in
/is contained by
/contains
operadores (o una negación de la misma):
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"}
1La is in
operador y sus familiares son implementadas por el AppleScript entorno de tiempo de ejecución en el nivel inferior, donde el código se ejecutan mucho más rápido que el normal interpretado AppleScript código.
Por cierto, los controladores que utilizan la etiqueta parámetros tienen un conjunto limitado de términos que se pueden utilizar para las etiquetas. Por ejemplo, intersection of listA and listB
no es posible como definido por el usuario del controlador debido a que and
no es un reconocido etiqueta. Consulte la Guía de Lenguaje de AppleScript sección de controladores con la etiqueta parámetros para obtener una lista de etiquetas. Aplicaciones y OSA extensiones pueden define su propia terminología (por ejemplo, la Lista Y Registro de OSAX proporciona esta sintaxis exacta), pero definida por el usuario de los controladores no son tan flexibles. Usualmente utilizo los parámetros de posición (handlerName(param1, param2, …)
) en lugar de intentar hacer las invocaciones de los controladores de mi mirada como la prosa.