مطابق با مفهوم توابع در برنامهنویسی هر تابعی در Dart میتواند شامل آرگومانهای پیش فرض باشد. این آرگومانهای پیش فرض به معنی مقادیری هستند که به عنوان پارامترهای تابع در نظر گرفته میشوند و در صورتی که مقداری برای آنها در صدا زدن تابع ارائه نشود، مقدار پیشفرض مورد نظر به عنوان آرگومان به کار میرود.
در ادامه چند مثال از توابع با آرگومانهای پیش فرض در Dart آمده است:
۱- مثال تابعی با یک آرگومان پیش فرض:
void printName(String name, [int age = 0]) {
print('Name: $name');
print('Age: $age');
}
// فراخوانی تابع
printName('Erfan', 25);
printName('Reza');
در مثال بالا تابع printName
دو پارامتر به نامهای name
و age
دارد. پارامتر age
دارای مقدار پیش فرض صفر است. با فراخوانی تابع با یک آرگومان، مقدار آرگومان به پارامتر name
اختصاص مییابد و مقدار پیش فرض برای پارامتر age
بکار میرود. با فراخوانی تابع با دو آرگومان، مقدار اول به پارامتر name
و مقدار دوم به پارامتر age
اختصاص مییابد.
۲- مثال تابعی با چند آرگومان پیش فرض:
void printNumbers(int a, int b, [int c = 0, int d = 0]) {
print('a: $a');
print('b: $b');
print('c: $c');
print('d: $d');
}
// فراخوانی تابع
printNumbers(1, 2);
printNumbers(3, 4, 5);
printNumbers(6, 7, 8, 9);
در این مثال، تابع printNumbers
چهار پارامتر به نامهای a
، b
، c
و d
دارد. پارامترهای c
و `
۳- مثال تابعی با آرگومانهای اختیاری با مقادیر پیش فرض:
با فراخوانی تابع با دو آرگومان، مقدار اول به پارامتر a و مقدار دوم به پارامتر b اختصاص مییابد و مقادیر پیش فرض برای پارامترهای c و d بکار میرود. با فراخوانی تابع با سه آرگومان، مقدار اول به پارامتر a مقدار دوم به پارامتر b و مقدار سوم به پارامتر c اختصاص مییابد و مقدار پیش فرض برای پارامتر d بکار میرود. با فراخوانی تابع با چهار آرگومان مقدار اول به پارامتر a مقدار دوم به پارامتر b مقدار سوم به پارامتر c و مقدار چهارم به پارامتر d` اختصاص مییابد.
void printColors(String color1, [String color2 = 'red', String color3 = 'blue']) {
print('Color 1: $color1');
print('Color 2: $color2');
print('Color 3: $color3');
}
// فراخوانی تابع
printColors('green');
printColors('yellow', 'orange');
printColors('purple', 'pink', 'brown');
در مثال بالا تابع printColors
سه پارامتر به نامهای color1
، color2
و color3
دارد. پارامتر color2
دارای مقدار پیش فرض “red” و پارامتر color3
دارای مقدار پیش فرض “blue” هستند.
با فراخوانی تابع با یک آرگومان، مقدار آرگومان به پارامتر color1
اختصاص مییابد و مقادیر پیش فرض برای پارامترهای color2
و color3
بکار میرود.
با فراخوانی تابع با دو آرگومان، مقدار اول به پارامتر color1
و مقدار دوم به پارامتر color2
اختصاص مییابد و مقدار پیش فرض برای پارامتر color3
بکار میرود.
با فراخوانی تابع با سه آرگومان، مقدار اول به پارامتر color1
، مقدار دوم به پارامتر color2
و مقدار سوم به پارامتر color3
اختصاص مییابد.
۴- مثال تابعی با آرگومانهای اختیاری بدون مقدار پیش فرض:
void printNumbers(int num1, [int num2, int num3]) {
print('Number 1: $num1');
print('Number 2: $num2');
print('Number 3: $num3');
}
// فراخوانی تابع
printNumbers(1);
printNumbers(2, 3);
printNumbers(4, 5, 6);
در مثال بالا تابع printNumbers
سه پارامتر به نامهای num1
، num2
و num3
دارد. هیچکدام از پارامترها دارای مقدار پیش فرض نیستند. با فراخوانی تابع با یک آرگومان، مقدار آرگومان به پارامتر num1
اختصاص مییابد و مقادیر null
برای پارامترهای num2
و num3
بکار میرود. با فراخوانی تابع با دو آرگومان، مقدار اول به پارامتر num1
و مقدار دوم به پارامتر num2
اختصاص مییابد و مقدار null
برای پارامتر num3
بکار میرود. با فراخوانی تابع با سه آرگومان، مقدار اول به پارامتر num1
، مقدار دوم به پارامتر num2
و مقدار سوم به پارامتر num3
اختصاص مییابد.
با استفاده از این نوع پارامترها، میتوانید توابعی با پارامترهای اختیاری با مقادیر پیش فرض یا بدون مقادیر پیش فرض تعریف کنید و در صورت نیاز به استفاده از آنها، آنها را به صورت اختیاری و با مقادیر پیش فرض یا بدون مقادیر پیش فرض به تابع پاس بدهید.
۵- مثال تابعی با پارامتر متغیر:
void printNumbers(var numbers) {
for (var number in numbers) {
print(number);
}
}
// فراخوانی تابع
var myNumbers = [1, 2, 3, 4, 5];
printNumbers(myNumbers);
در مثال بالا تابع printNumbers
یک پارامتر به نام numbers
دارد که به عنوان یک متغیر تعریف شده است. با فراخوانی تابع و پاس دادن یک لیست از اعداد به عنوان آرگومان، این لیست به عنوان مقدار پارامتر numbers
به تابع پاس داده میشود. درون تابع، با استفاده از حلقه for-in
، تمامی اعداد لیست چاپ میشوند.
این نوع پارامتر برای توابعی که میتوانند با ورود دادههای مختلفی مانند لیست، رشته، اعداد و … کار کنند، مناسب است.
۶- مثال تابعی با پارامترهای با نوع دادهی مشخص:
int sumNumbers(int num1, int num2) {
return num1 + num2;
}
// فراخوانی تابع
var result = sumNumbers(2, 3);
print(result);
در مثال قبل تابع sumNumbers
دو پارامتر به نامهای num1
و num2
دارد که هر دو دارای نوع دادهای int
هستند. با فراخوانی تابع با دو عدد 2
و 3
به عنوان آرگومانها، این عددي که جمعشان برابر با 5
است، به عنوان مقدار بازگشتی تابع به متغیر result
اختصاص داده شده است.
این نوع پارامتر برای توابعی که دادههای مشخصی به صورت ورودی میگیرند، مناسب است و میتواند به اشتباهات نوع دادهی ورودی در تابع کمک کند.