1. Advanced Functions — اعلی فنکشنز
Difficulty: Intermediate — متوسط
Time: ~25 minutes
Rest Parameters — باقی پیرامیٹرز
Accept any number of arguments with ...:
فنکشن جمع_سب(...اعداد) {
متغیر کل = 0;
کے_لیے (متغیر ن میں اعداد) {
کل += ن;
}
واپس کل;
}
لکھو(جمع_سب(1, 2, 3)); // 6
لکھو(جمع_سب(1, 2, 3, 4, 5)); // 15
اردو:
...سے باقی تمام دلائل ایک فہرست میں جمع ہو جاتے ہیں۔ آخری پیرامیٹر پر ہی استعمال ہو سکتا ہے۔
Spread Operator — پھیلاؤ آپریٹر
... also spreads an array into individual values:
متغیر الف = [1, 2, 3];
متغیر ب = [4, 5, 6];
متغیر ملا = [...الف, ...ب];
لکھو(ملا); // [1, 2, 3, 4, 5, 6]
فنکشن جمع3(x, y, z) { واپس x + y + z; }
لکھو(جمع3(...الف)); // 6 (spreads list as arguments)
اردو:
...فہرستفہرست کو الگ الگ قدروں میں پھیلاتا ہے۔ یہ فہرستیں جوڑنے یا فنکشن کو فہرست سے دلائل دینے کے لیے مفید ہے۔
Higher-Order Functions — اعلی درجے کے فنکشنز
A function that takes another function as an argument (or returns one):
تبدیل — map
Apply a function to every element of a list:
متغیر اعداد = [1, 2, 3, 4, 5];
فنکشن دوگنا(ن) { واپس ن * 2; }
متغیر دوگنے = اعداد.تبدیل(دوگنا);
لکھو(دوگنے); // [2, 4, 6, 8, 10]
چھانو — filter
Keep only elements where the function returns true:
اکٹھا — reduce
Combine all elements into a single value:
اردو:
.تبدیل()ہر عنصر تبدیل کرتا ہے،.چھانو()شرط کے مطابق چھانتا ہے،.اکٹھا()سب کو ایک قدر میں ملاتا ہے۔ فنکشن کا نام (بغیر قوسین) بطور دلیل دیں۔
Closures — بندش
A function that remembers the variables of the scope it was created in:
فنکشن گنتی_بنائیں(شروع = 0) {
متغیر حالت = [شروع];
واپس فنکشن() {
حالت[0] = حالت[0] + 1;
واپس حالت[0];
};
}
متغیر گنتی = گنتی_بنائیں();
لکھو(گنتی()); // 1
لکھو(گنتی()); // 2
لکھو(گنتی()); // 3
اردو: بندش (closure) اندرونی فنکشن باہری فنکشن کے متغیر یاد رکھتا ہے۔ باہری قدر کو تبدیل کرنے کے لیے فہرست
[قدر]کا چال استعمال کریں۔
Function Composition — فنکشن ترکیب
Combine simple functions to build complex ones:
فنکشن دوگنا(ن) { واپس ن * 2; }
فنکشن ایک_جمع(ن) { واپس ن + 1; }
فنکشن ترکیب(ف1, ف2) {
واپس فنکشن(ن) {
واپس ف1(ف2(ن));
};
}
متغیر دوگنا_پھر_جمع = ترکیب(ایک_جمع, دوگنا);
لکھو(دوگنا_پھر_جمع(5)); // 11 (5×2=10, 10+1=11)
Key Points — اہم نکات
...اعدادcollects remaining args into a list (rest params)...فہرستspreads a list into separate args.تبدیل(f),.چھانو(f),.اکٹھا(f, init)— list transformations- Closures capture outer scope; use mutable container
[val]to update - Pass function names without
()as arguments
اردو:
...آرام اور پھیلاؤ دونوں کام کرتا ہے۔.تبدیل/.چھانو/.اکٹھافہرست کو تبدیل کرتے ہیں۔ بندش باہری متغیر یاد رکھتی ہے۔