Ruby 2.1 introdujo importantes mejoras en la sintaxis del lenguaje, incluidos los argumentos nombrados obligatorios y el retorno de símbolos en def.
Argumentos por Palabra Clave Obligatorios
Los argumentos por palabra clave sin un valor predeterminado pasan a ser estrictamente obligatorios:
# length es obligatorio; char tiene por defecto '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
Las Definiciones de Métodos Retornan Símbolos
En Ruby 2.1+, def devuelve el nombre del método como Symbol, lo que permite modificadores en la misma línea:
class User
# Hacer privado en la misma línea
private def secret_token
"secret"
end
# Encadenar con decoradores de módulo
memoize def expensive_computation
sleep 2
42
end
end
Mejoras Numéricas y de Literales
# Sufijo literal para racionales 'r'
2/3r # => (2/3)
# Sufijo literal para complejos 'i'
3 + 4i # => (3+4i)
# Optimización de cadenas congeladas: 'freeze'
"constant_string".freeze