Ruby 2.1 a introduit des améliorations syntaxiques marquantes, notamment les arguments nommés obligatoires et le retour de symboles par def.
Arguments nommés obligatoires (Keyword Arguments)
Les arguments nommés sans valeur par défaut deviennent strictement obligatoires :
# length est obligatoire ; char a la valeur par défaut '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
Les définitions de méthodes retournent des symboles
Dans Ruby 2.1+, def retourne le nom de la méthode sous forme de Symbole, autorisant les modificateurs en ligne :
class User
# Rendre privé en ligne
private def secret_token
"secret"
end
# Chaîner avec des décorateurs de modules
memoize def expensive_computation
sleep 2
42
end
end
Améliorations numériques et littérales
# Suffixe littéral pour rationnels 'r'
2/3r # => (2/3)
# Suffixe littéral pour complexes 'i'
3 + 4i # => (3+4i)
# Optimisation de gel de chaînes : 'freeze'
"constant_string".freeze