پارامترهای پیشفرض

پارامترهای پیشفرض همانگونه که از اسمشان پیداست دارای مقادیر پیشفرضی هستند و می‌توان به آنها آرگومان ارسال کرد یا نه. اگر به اینگونه پارامترها، آرگومانی ارسال نشود از مقادیر پیشفرض استفاده می‌کنند. به مثال زیر توجه کنید :

  1: def printMessage(message = "Welcome to Ruby Tutorials!")
  2:   puts message                                       
  3: end
  4: 
  5: printMessage() 
  6: printMessage("Learn Ruby Today!")
Welcome to Ruby Tutorials!
Learn Ruby Today!

متد printMessage() (خطوط 3-1) یک پارامتر اختیاری دارد. برای تعریف یک پارامتر اختیاری می‌توان به آسانی و با استفاده از علامت = یک مقدار را به یک پارامتر اختصاص داد (مثال بالا خط 1). دو بار متد را فراخوانی می‌کنیم. در اولین فراخوانی (خط 5) ما آرگومانی به متد ارسال نمی‌کنیم بنابراین متد از مقدار پیشفرض (Welcome to Ruby Tutorials!) استفاده می‌کند. در دومین فراخوانی (خط 6) یک پیغام (آرگومان) به متد ارسال می‌کنیم که جایگزین مقدار پیشفرض پارامتر می‌شود. اگر از چندین پارامتر در متد استفاده می‌کنید همه پارامترهای اختیاری باید در آخر بقیه پارامترها ذکر شوند. به مثالهای زیر توجه کنید:

def someMethod(default1 = 10, default2 = 20, require1, require2) #ERROR

def someMethod(require1, default1 = 10, require2, default2 = 20) #ERROR

def someMethod(require1, require2, default1 = 10, default2 = 20) #Correct

وقتی متدها با چندین پارامتر اختیاری فراخوانی می‌شوند باید به پارامترهایی که از لحاظ مکانی در آخر بقیه پارامترها نیستند مقدار اختصاص داد. به یاد داشته باشید که نمی‌توان برای نادیده گرفتن یک پارامتر به صورت زیر عمل کرد :

def someMethod(required1, default1 = 10,  default2 = 20)
   #Some Code
end 

someMethod(10, , 100); #Error