Ruby 2.1 a introdus îmbunătățiri sintactice majore în limbaj, inclusiv argumente de cuvinte cheie obligatorii și returnarea de simboluri de către def.
Argumente de cuvinte cheie obligatorii
Argumentele cu cuvinte cheie fără o valoare implicită devin strict obligatorii:
# length este obligatoriu; char are valoarea implicită '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
Definițiile de metode returnează simboluri
În Ruby 2.1+, def returnează numele metodei ca Symbol, permițând modificatori inline:
class User
# Declarare private în linie
private def secret_token
"secret"
end
# Înlănțuire cu decoratori de module
memoize def expensive_computation
sleep 2
42
end
end
Îmbunătățiri numerice și literale
# Sufix pentru literali raționali 'r'
2/3r # => (2/3)
# Sufix pentru numere complexe 'i'
3 + 4i # => (3+4i)
# Optimizarea înghețării șirurilor: 'freeze'
"constant_string".freeze