O Ruby 2.1 introduziu importantes melhorias sintáticas, incluindo argumentos nomeados obrigatórios e o retorno de símbolos pelo def.
Argumentos de Palavra-chave Obrigatórios
Argumentos de palavra-chave sem valor padrão tornam-se estritamente obrigatórios:
# length é obrigatório; char assume o padrão '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ções de Método Retornam Símbolos
No Ruby 2.1+, def retorna o nome do método como um Symbol, permitindo modificadores na mesma linha:
class User
# Torna privado inline
private def secret_token
"secret"
end
# Encadeamento com decoradores de módulo
memoize def expensive_computation
sleep 2
42
end
end
Melhorias Numéricas e em Literais
# Sufixo de literal racional 'r'
2/3r # => (2/3)
# Sufixo de literal complexo 'i'
3 + 4i # => (3+4i)
# Otimização de strings congeladas: 'freeze'
"constant_string".freeze