✍️ همان سهنقطه در تعریف پارامترهای تابع، نقش دیگری دارد: rest parameter یا جمعکردن آرگومانهای باقیمانده. اگر تابع یک پارامتر ثابت و بعد ...extras داشته باشه، اولین آرگومان به پارامتر ثابت میرسه و بقیه داخل آرایه extras جمع میشن. rest باید آخرین پارامتر باشد.
مثلاً تابعی که یک عنوان و چند نام میگیره، میتونه نامها را در آرایهای جدا داشته باشه؛ فرقی نمیکنه یک نام بدهیم یا پنج نام. اگر آرگومان اضافهای نباشه، rest یک آرایه خالی است. در نتیجه میتونیم همان متدهای آرایه، مثل reduce، را روی آن اجرا کنیم و به شرطهای متعدد نیاز نداریم.
در تمرین، مبلغ پایه از ابتدا وجود دارد و بقیه عددها به آن اضافه میشن. خطای رایج، جا انداختن مبلغ پایه یا استفاده از reduce بدون مقدار آغازین است؛ حالت بدون مبلغ اضافه این خطا را آشکار میکنه. عدد منفی هم معتبره و میتونه نقش کاهش هزینه را داشته باشه. قرار نیست ورودیها را رشته کنیم یا به هم بچسبانیم؛ نتیجه باید عدد باشد.
فعالیت شما
sumExtras(base, ...extras) را بنویس. همه آرگومانها عدد متناهیاند و base همیشه داده میشود. جمع base و همه extras را برگردان؛ (10,2,3) => 15، فقط (10) => 10 و (10,-3,0) => 7. تعداد آرگومانهای اضافه محدود نیست.