Thuật ngữ "toán tử splat" bắt nguồn từ Ruby, trong đó *
ký tự (đôi khi được gọi là "splat" —xem mục nhập Tệp Biệt ngữ ) được sử dụng để chỉ ra rằng một mục nhập trong danh sách đối số sẽ "hấp thụ" danh sách đối số.
CoffeeScript thông qua các sọc Ruby-phong cách rất sớm (xem vấn đề 16 ), nhưng theo gợi ý của Douglas Crockford, cú pháp được thay đổi từ *x
đến x...
một vài tuần sau đó (xem vấn đề 45 ). Tuy nhiên, CoffeeScripters vẫn gọi cú pháp là "splat" hoặc "splat operator".
Đối với những gì chúng thực sự làm, các splat cắt arguments
đối tượng theo cách mà đối số splatted trở thành một mảng của tất cả các đối số "phụ". Ví dụ nhỏ nhất là
(args...) ->
Trong trường hợp này, args
sẽ chỉ đơn giản là một bản sao mảng của arguments
. Các đối số rải rác có thể đến trước, sau hoặc giữa các đối số chuẩn:
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
Trong hai trường hợp đầu tiên, nếu hàm nhận 0-1 đối số, rest
sẽ là một mảng trống. Trong trường hợp cuối cùng, hàm cần nhận nhiều hơn 2 đối số rest
để không trống.
Vì JavaScript không cho phép nhiều chữ ký cho các hàm có cùng tên (theo cách mà C và Java làm), các biểu tượng phân tách là một công cụ tiết kiệm thời gian rất lớn để xử lý số lượng đối số khác nhau.
arguments
+call
: stackoverflow.com/questions/17380315/…