ار

ارجاع در Perl

9 تمرین

درباره‌ی ارجاع

درک ارجاع‌ها برای استفاده‌ی مؤثر از Perl امری بنیادی است. از آنجا که ارجاع‌ها اسکالر هستند و آرایه‌ها و هش‌ها فقط می‌توانند اسکالر را در خود نگه دارند، ارجاع‌ها کلید تودرتوسازی این ساختارهای داده هستند.

می‌توان برای متغیرها و زیرروال‌های موجود با استفاده از عملگر بکاسلش \ ارجاع ساخت:

  • \$scalar برای ساختن یک ارجاع اسکالر (این می‌تواند هر اسکالری باشد، مثلاً \1، نه فقط یک متغیر).
  • \@array برای ساختن یک ارجاع آرایه.
  • \%hash برای ساختن یک ارجاع هش.
  • \&sub برای ساختن یک ارجاع کد.

همچنین می‌توانید چیزی به نام ارجاع بینام برای آرایه‌ها، هش‌ها و زیرروال‌ها بسازید:

  • ['Alice', 'Bob', 'Charlie'] برای ساختن یک ارجاع آرایه‌ی بینام.
  • {foo => 'a', bar => 'b', baz => 'c'} برای ساختن یک ارجاع هش بینام.
  • sub { return 1 } برای ساختن یک ارجاع کد بینام.

هشدار: آکولادها در Perl می‌توانند در برخی بافت‌ها مبهم باشند. اگر ارجاع هشی که انتظار دارید را نمی‌گیرید، یک علامت مثبت در ابتدا اضافه کنید تا ابهام آن رفع شود، مثلاً +{}. برای اطلاعات بیشتر، آکولادها را ببینید.

می‌توان به ارجاع‌ها با استفاده از عملگر فلش -> دسترسی پیدا کرد:

  • $ref->[0] برای دسترسی به یک عنصر درون یک ارجاع آرایه.
  • $ref->{foo} برای دسترسی به یک مقدار درون یک ارجاع هش.
  • $ref->($arg) برای فراخوانی یک زیرروال از طریق یک ارجاع کد.

به داده‌های درون ساختارهای داده‌ی پیچیده، مانند آرایه‌های چندبعدی و هش‌های تودرتو، می‌توان با زنجیره‌کردن زیرنویس‌ها دسترسی پیدا کرد، مثلاً $ref->{foo}[0]{bar} (همان $ref->{foo}->[0]->{bar}).

اگر می‌خواهید یک آرایه یا هش را به‌طور کامل ارجاع‌زدایی کنید، می‌توانید از عملگر فلش استفاده کنید و بعد از آن به ترتیب @* یا %* را بیاورید، مثلاً $ref->@* یا $ref->%*. همچنین می‌توانید با جایگزین‌کردن * با یک زیرنویس، برش‌هایی از یک ارجاع آرایه یا هش به دست آورید، مثلاً $ref->@[0..2] یا $ref->@{'Foo', 'Bar'}. برای برش‌ها، تغییر سیگیل در اینجا هم به همان شکلی اعمال می‌شود که برای متغیرهای آرایه و هش اعمال می‌شود.

ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

ارجاع را یاد بگیرید

تمرین کردن قفل شده است

برای تمرین ارجاع قفل 8 تمرین دیگر را باز کنید