คำว่า "ตัวดำเนินการ splat" มาจาก Ruby โดยที่*
อักขระ (บางครั้งเรียกว่า "splat" - ดูรายการ Jargon File ) เพื่อระบุว่ารายการในรายการอาร์กิวเมนต์ควร "เต็ม" รายการอาร์กิวเมนต์
CoffeeScript นำมาใช้เครื่องหมายทับทิมสไตล์มากในช่วงต้น (ดูปัญหา 16 ) แต่ในข้อเสนอแนะดักลาส Crockford ของไวยากรณ์ก็เปลี่ยนจาก*x
ไปx...
สองสามสัปดาห์ต่อมา (ดูปัญหา 45 ) อย่างไรก็ตาม CoffeeScripters ยังคงอ้างถึงไวยากรณ์เป็นตัวดำเนินการ "splat" หรือ "splat"
สำหรับสิ่งที่พวกเขาทำจริงการแยกชิ้นส่วนของarguments
วัตถุในลักษณะที่อาร์กิวเมนต์ Splatted กลายเป็นอาร์เรย์ของอาร์กิวเมนต์ "พิเศษ" ทั้งหมด ตัวอย่างที่น่าสนใจที่สุดคือ
(args...) ->
ในกรณีนี้ก็จะเป็นสำเนาอาร์เรย์ของargs
arguments
อาร์กิวเมนต์ Splatted สามารถมาก่อนหลังหรือระหว่างอาร์กิวเมนต์มาตรฐาน:
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
ในสองกรณีแรกหากฟังก์ชันได้รับอาร์กิวเมนต์ 0-1 rest
จะเป็นอาร์เรย์ว่าง ในกรณีสุดท้ายฟังก์ชันต้องได้รับมากกว่า 2 อาร์กิวเมนต์เพื่อrest
ให้ไม่ว่างเปล่า
เนื่องจาก JavaScript ไม่อนุญาตให้มีลายเซ็นหลายตัวสำหรับฟังก์ชันที่มีชื่อเดียวกัน (เช่นเดียวกับ C และ Java) จึงช่วยประหยัดเวลาได้มากสำหรับการจัดการกับอาร์กิวเมนต์ที่แตกต่างกัน
arguments
+call
: stackoverflow.com/questions/17380315/…