پارامترها و 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) ? "زوج" : "فرد";

خلاصه

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط