Ruby 2.1 ha introdotto importanti miglioramenti sintattici, tra cui i keyword argument obbligatori e il fatto che def restituisce simboli.
Keyword Argument Obbligatori
I parametri con parola chiave senza valore predefinito diventano strettamente obbligatori:
# length è obbligatorio; char è opzionale con default '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
Le definizioni di metodo restituiscono simboli
In Ruby 2.1+, def restituisce il nome del metodo come Symbol, permettendo modificatori inline:
class User
# Rende privato inline
private def secret_token
"secret"
end
# Concatenamento con decoratori di modulo
memoize def expensive_computation
sleep 2
42
end
end
Miglioramenti numerici e letterali
# Suffisso letterale per numeri razionali 'r'
2/3r # => (2/3)
# Suffisso letterale per numeri complessi 'i'
3 + 4i # => (3+4i)
# Ottimizzazione del congelamento delle stringhe: 'freeze'
"constant_string".freeze