قدمت Ruby 2.1 تحسينات لغوية فارقة، بما في ذلك المعاملات المسماة المطلوبة (required keyword arguments) وإرجاع def لرمز اسم الدالة.
المعاملات المسماة المطلوبة (Required Keyword Arguments)
تصبح المعاملات المسماة التي لا تحتوي على قيمة افتراضية مطلوبة بشكل إلزامي:
# length مطلوب؛ char يأخذ القيمة الافتراضية '0'
def pad(number, length:, char: "0")
number.to_s.rjust(length, char)
end
pad(42, length: 6) # => "000042"
pad(42) # ArgumentError: missing keyword: :length
تعريف الدوال يرجع رمز اسم الدالة (Symbols)
في Ruby 2.1+، ترجع دالة def اسم الطريقة كـ Symbol، مما يتيح التعديل المباشر في نفس السطر:
class User
# تحويل الدالة إلى private في نفس السطر
private def secret_token
"secret"
end
# التسلسل مع مزخرفات الوحدات (Decorators)
memoize def expensive_computation
sleep 2
42
end
end
تحسينات الأرقام والتمثيل النصي
# لاحقة الأعداد الكسرية 'r'
2/3r # => (2/3)
# لاحقة الأعداد المركبة 'i'
3 + 4i # => (3+4i)
# تجميد السلاسل النصية للتحسين: 'freeze'
"constant_string".freeze