دستور if تو در تو

می‌توان از دستور if تو در تو در Ruby استفاده کرد. یک دستور ساده if در داخل دستور if دیگر.

if (condition)
  code to execute
  if (condition)
      code to execute
  elsif (condition)
      if (condition)
          code to execute
      else
          if (condition)
              code to execute
          end
      end
  end
end

اجازه بدهید که نحوه استفاده از دستور if تو در تو را نشان دهیم :

 1: print 'Enter your age: '
 2: age = gets.to_i
 3: 
 4: print 'Enter your gender (male/female)'
 5: gender = gets
 6: 
 7: if age > 12
 8:     if age < 20
 9:         if gender == "male"
10:             puts "You are a teenage boy."
11:         else
12:             puts "You are a teenage girl."
13:         end
14:     else
15:         puts "You are already an adult."
16:     end
17: else
18:     puts "You are still too young."
19: end
Enter your age: 18
Enter your gender: male
You are a teenage boy.
Enter your age: 12
Enter your gender: female
You are still too young.

اجازه بدهید که برنامه را کالبد شکافی کنیم. ابتدا برنامه از شما درباره سنتان سؤال می‌کند (خط 1). در خط 4 درباره جنستان از شما سؤال می‌کند. سپس به اولین دستور if می‌رسد (خط 7). در این قسمت اگر سن شما بیشتر از 12 سال باشد برنامه وارد بدنه دستور if می‌شود در غیر اینصورت وارد بلوک else (خط 17) مربوط به همین دستور if می‌شود.
حال فرض کنیم که سن شما بیشتر از 12 سال است و شما وارد بدنه اولین if شده‌اید. در بدنه اولین if دو دستور if دیگر را مشاهده می‌کنید. اگر سن کمتر 20 باشد شما وارد بدنه if دوم می‌شوید و اگر نباشد به قسمت else متناظر با آن می‌روید (خط 14). دوباره فرض می‌کنیم که سن شما کمتر از 20 باشد، در اینصورت وارد بدنه if دوم شده و با یک if دیگر مواجه می‌شوید (خط 9). در اینجا جنسیت شما مورد بررسی قرار می‌گیرد که اگر برابر “male” باشد، کدهای داخل بدنه سومین if اجرا می‌شود در غیر اینصورت قسمت else مربوط به این if اجرا می‌شود (خط 11). پیشنهاد می‌شود که از if تو در تو در برنامه کمتر استفاده کنید چون خوانایی برنامه را پایین می‌آورد.