مسیر
/
Ruby
Ruby
/
برنامه‌ی درسی
/
دستورهای شرطی
دس

دستورهای شرطی در Ruby

22 تمرین

درباره‌ی دستورهای شرطی

روبی چیزی به نام «عبارات کنترل جریان» دارد؛ این عبارت‌ها برای کنترل نحوه‌ی اجرای برنامه به کار می‌روند و با مقداری کار می‌کنند که درست یا غلط ارزیابی می‌شود. عملگرهایی هم وجود دارند که می‌توان با آن‌ها چنین مقادیری ساخت؛ به این‌ها عملگرهای مقایسه می‌گویند.

دو عبارت کنترلی اصلی وجود دارند که تعیین می‌کنند کدام کد اجرا شود و کدام نشود؛ یعنی کدام شاخه اجرا می‌شود.

این دو عبارتند از: if و عبارت unless.

عملگرهای مقایسه

عملگرهای مقایسه برای مقایسه‌ی مقادیر به کار می‌روند و مقدار true یا false برمی‌گردانند. عملگرهای زیر نیاز دارند که دو مقداری که مقایسه می‌شوند از یک نوع باشند. اگر مقادیر از یک نوع نباشند، کامپایلر خطا می‌دهد. در ادامه فهرستی از این عملگرها و مثالی از زمانی که مقدار true برمی‌گردانند آمده است:

متد توضیح مثال
< کوچک‌تر از 4 < 5
<= کوچک‌تر یا مساوی 4 <= 4
> بزرگ‌تر از 3 > 1
>= بزرگ‌تر یا مساوی 2 >= 2

عملگرهای تساوی و نامساوی، برخلاف عملگرهایی که پیش‌تر گفته شد، می‌توانند هر نوع مقداری را مقایسه کنند. عملگر == برای بررسی برابری دو مقدار به کار می‌رود و نوع مقدار را هم بررسی می‌کند. عملگر != هم به همین شکل کار می‌کند، با این تفاوت که اگر مقادیر نامساوی باشند true و اگر مساوی باشند false برمی‌گرداند. در ادامه فهرستی از عملگرهای تساوی و نامساوی و مثالی از زمانی که مقدار true برمی‌گردانند آمده است:

متد توضیح مثال
== مساوی 4 == 4
!= نامساوی 5 != 4

عملگر مقایسه‌ی ترکیبی

عملگر مقایسه‌ی ترکیبی (که گاهی به آن عملگر سفینه‌ی فضایی می‌گویند) یک عملگر مقایسه‌ی ویژه است. ویژگی خاصش این است که به‌جای مقدار درست یا غلط، یک عدد برمی‌گرداند. این عملگر به‌صورت <=> نوشته می‌شود و برای مقایسه‌ی دو مقدار به کار می‌رود. اگر مقدار چپ بزرگ‌تر از مقدار راست باشد 1، اگر کوچک‌تر باشد -1 و اگر مقادیر مساوی باشند 0 برمی‌گرداند.

1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1

دستور if

دستور if برای بررسی این به کار می‌رود که یک شرط داده‌شده «درست» است یا «غلط». اگر شرط درست باشد، کد داخل دستور if اجرا می‌شود. دستور if با کلیدواژه‌ی end پایان می‌یابد.

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

دستور unless

دستور unless بسیار شبیه دستور if کار می‌کند، با این تفاوت که اگر شرط غلط باشد، کد داخل دستور unless را اجرا می‌کند.

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

دستور else

دستور else را می‌توان همراه با دستور if به کار برد. دستور else در صورتی اجرا می‌شود که شاخه‌ی if اجرا نشده باشد.

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
else
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

دستور «آبشاری if»

دستور elsif را می‌توان همراه با دستور if به کار برد. دستور elsif در صورتی اجرا می‌شود که شاخه‌ی if اجرا نشده باشد و شرط دستور elsif درست باشد. می‌توان چند دستور elsif را پشت سر هم زنجیره کرد و نخستین شرطی که درست باشد اجرا می‌شود. همچنین می‌توان در انتهای دستور if یک دستور else نیز قرار داد که اگر هیچ‌یک از شرط‌های پیشین درست نبودند، اجرا می‌شود.

value = 1
if value == 0
  "1 is equal to 0"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"

if و unless به‌صورت پسوند

دستور if و unless را می‌توان به‌صورت [پسوند][if-as-suffix] نیز به کار برد؛ این کار زمانی مفید است که بخواهید در صورت درست بودن یک شرط، تنها یک خط کد اجرا کنید. برای این کار، دستور if یا unless را بعد از کدی که می‌خواهید اجرا شود قرار دهید.

value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1

"1 is not equal to 1" unless value == 1
# => nil
ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

دستورهای شرطی را یاد بگیرید

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

برای تمرین دستورهای شرطی قفل 10 تمرین دیگر را باز کنید