پارامترها و return
الگوهای پارامتر، مقادیر پیشفرض، برگرداندن لیست و چند نمونه واقعی.
الگوهای گرفتن پارامتر
الگوی لیستی — رایجترین
sub area {
my ($w, $h) = @_;
return $w * $h;
}
الگوی shift — برای ۱-۲ پارامتر
sub double {
my $x = shift;
return $x * 2;
}
مقدار پیشفرض با //
sub greet {
my ($name, $greeting) = @_;
$greeting //= "سلام"; { اگر undef بود }
return "$greeting $name!";
}
say greet("Ali"); { سلام Ali! }
say greet("Ali", "درود"); { درود Ali! }
برگرداندن لیست
sub min_max {
my @nums = @_;
my ($min, $max) = ($nums[0], $nums[0]);
foreach my $n (@nums) {
$min = $n if $n < $min;
$max = $n if $n > $max;
}
return ($min, $max); { برگرداندن دو مقدار! }
}
my ($lo, $hi) = min_max(5, 2, 9, 1);
say "min=$lo max=$hi";
برگرداندن هش/آرایه (با ارجاع)
sub make_user {
my ($name, $age) = @_;
return { name => $name, age => $age }; { ارجاع هش }
}
my $u = make_user("Ali", 16);
say "$u->{name} is $u->{age}";
چک کردن تعداد آرگومان
sub add {
die "دو آرگومان لازم است!" unless @_ == 2;
my ($a, $b) = @_;
return $a + $b;
}
مثال: کتابخانه توابع
sub ctof {
my ($c) = @_;
return $c * 9 / 5 + 32;
}
sub is_even {
my ($n) = @_;
return $n % 2 == 0;
}
say ctof(25); { 77 }
say is_even(4) ? "زوج" : "فرد";
خلاصه
- my ($x, $y) = @_ استاندارد
- $x //= default برای پیشفرض
- return ($a, $b) — چند مقدار
- ارجاع برای برگرداندن ساختار
این مبحث بخشی از دوره آموزش کامل پرل است.