آرگومان های کلمه کلیدی (Keyword Arguments)

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

functionToCall( paramName1: value, paramName2: value, ... paramNameN: value)

حال به مثال زیر توجه کنید :

 1: def tellinformation(jack:, andy:, mark:)
 2:   puts "Jack's family is #{jack}."
 3:   puts "Andy's family is #{andy}."
 4:   puts "Mark's family is #{mark}."
 5: end
 6: 
 7: tellinformation(jack: "Scalia", andy: "Brown", mark: "OverMars")
 8: 
 9: #puts  a newline
10: puts 
11: 
12: tellinformation(andy: "Brown", mark: "OverMars", jack: "Scalia")
13: 
14: puts
15: 
16: tellinformation(mark: "OverMars", jack: "Scalia", andy: "Brown")
Jack's family is Scalia.
Andy's family is Brown.
Mark's family is OverMars.

Jack's family is Scalia.
Andy's family is Brown.
Mark's family is OverMars.

Jack's family is Scalia.
Andy's family is Brown.
Mark's family is OverMars.

خروجی نشان می‌دهد که حتی اگر ما ترتیب آرگومانها در سه بار فراخوانی متد را تغییر دهیم مقادیر مناسب به پارامترهای مربوطه‌شان اختصاص داده می‌شود. وقتی از آرگومان های کلمه کلیدی استفاده می کنید دیگر نمی توانید هنگام فراخوانی متد، آرگومانهای ثابت (مقداری) را به کار ببرید. مثلا همه کدهای زیر با خطا مواجه می شوند:

#The following codes are wrong and will lead to errors

tellinformation("Scalia", andy: "Brown", mark: "OverMars")

tellinformation(jack: "Scalia", andy: "Brown", "OverMars")

tellinformation(jack: "Scalia", "OverMars", andy: "Brown")