Ruby 2.1 führte bahnbrechende Syntaxverbesserungen ein, darunter erforderliche Keyword-Argumente und die Rückgabe von Methodennamen als Symbol bei def.
Erforderliche Keyword-Argumente
Schlüsselwort-Argumente ohne Standardwert werden strikt erforderlich:
# length ist erforderlich; char hat den Standardwert '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
Methodendefinitionen geben Symbole zurück
In Ruby 2.1+ gibt def den Methodennamen als Symbol zurück, was Inline-Modifikatoren ermöglicht:
class User
# Inline als private deklarieren
private def secret_token
"secret"
end
# Mit Modul-Dekoratoren verketten
memoize def expensive_computation
sleep 2
42
end
end
Numerische & Literal-Verbesserungen
# Rational-Literal-Suffix 'r'
2/3r # => (2/3)
# Complex-Literal-Suffix 'i'
3 + 4i # => (3+4i)
# Optimierung durch Einfrieren von Strings: 'freeze'
"constant_string".freeze