برنامهٔ پایین دقیقاً برنامهٔ قبلی شماست (با چندجا تغییر نام) و اگر اون رو اجرا کنید درست خروجی برنامهٔ پیش رو برمیگردونه. اول برنامه به «استاتمان» (اعلان) if میرسه شرط رو بررسی و خروجی puts رو قرار میده و else نادیده گرفته میشه. چون شرط *تنها* یکبار درست ارزیابی میشه پس حلقه از حرکت باز نمیایسته و در تناقضهای بعدی فقط پیغام هشدار رو چاپ میکنه.
phonebook = [
%w(shahryar tavakkoli 09213380329),
%w(arash ebrahimi 09368094936)
]
phonebook.each do |contact|
if contact[0] == 'shahryar' && contact[1] == 'tavakkoli'
puts "[#{contact[1]}][#{contact[2]}]"
else
puts "the contact you searched for doesn't exist in the phonebook."
end
end
وارونهٔ برنامهٔ بالا:(حلقه رو بعد از یکبار اجرا و چاپ خروجی وامیستونه)
phonebook = [
%w(shahryar tavakkoli 09213380329),
%w(arash ebrahimi 09368094936)
]
phonebook.each do |contact|
if contact[0] == 'shahryar' && contact[1] == 'tavakkoli'
puts "[#{contact[1]}][#{contact[2]}]"
else
break
end
end