การเพิ่มการเขียนสคริปต์เครื่องมือรายการและบันทึกให้intersection of listA and listB
(ในกลุ่มคำศัพท์อื่น ๆ )
ไม่มี "ดั้งเดิม" ในตัวสำหรับคำนวณจุดตัดรายการ โดยปกติแล้วจะใช้การวนซ้ำอย่างน้อยหนึ่งลูปเพื่อตรวจสอบแต่ละองค์ประกอบของรายการหนึ่งเทียบกับอีกรายการหนึ่ง สิ่งนี้สามารถลดความซับซ้อนได้ (และเร่ง1 ) บิตโดยใช้หนึ่งในis in
/ is contained by
/ contains
โอเปอเรเตอร์ (หรือลบล้าง):
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ตัวis in
ดำเนินการและเครือญาติของมันถูกนำมาใช้โดยสภาพแวดล้อมรันไทม์ AppleScript ในรหัสระดับล่างซึ่งพวกเขาดำเนินการเร็วกว่าโค้ด AppleScript ที่ตีความปกติ
อนึ่งตัวจัดการที่ใช้พารามิเตอร์ที่มีเลเบลมีชุดคำศัพท์ที่ จำกัด ซึ่งสามารถใช้สำหรับเลเบลได้ ตัวอย่างเช่นintersection of listA and listB
ไม่สามารถเป็นตัวจัดการที่ผู้ใช้กำหนดได้เนื่องจากand
ไม่ใช่เลเบลที่รู้จัก ดูที่ส่วนคู่มือภาษา AppleScriptบนตัวจัดการพร้อมพารามิเตอร์ที่มีเลเบลสำหรับรายการของเลเบลที่ถูกต้อง แอปพลิเคชันและส่วนขยาย OSA สามารถกำหนดคำศัพท์ของตนเอง (เช่น List & Record OSAX มีไวยากรณ์ที่แน่นอนนี้) แต่ตัวจัดการที่ผู้ใช้กำหนดเองไม่ยืดหยุ่น ฉันมักจะใช้พารามิเตอร์ตำแหน่ง ( handlerName(param1, param2, …)
) แทนที่จะพยายามทำให้การเรียกใช้ตัวจัดการของฉันดูเหมือนจะเป็นร้อยแก้ว