Ruby 2.1 introducerade betydande syntaxförbättringar i språket, inklusive obligatoriska nyckelordsargument och att def returnerar metodnamnet som en symbol.
Obligatoriska nyckelordsargument (Keyword Arguments)
Nyckelordsargument utan standardvärde blir strikt obligatoriska:
# length är obligatoriskt; char har standardvärdet '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
Metoddefinitioner returnerar symboler
I Ruby 2.1+ returnerar def metodnamnet som en Symbol, vilket möjliggör inline-modifierare:
class User
# Gör private inline
private def secret_token
"secret"
end
# Kedja med moduldekoratörer
memoize def expensive_computation
sleep 2
42
end
end
Numeriska och literala förbättringar
# Rationell literal-suffix 'r'
2/3r # => (2/3)
# Komplext literal-suffix 'i'
3 + 4i # => (3+4i)
# Optimering med frysta strängar: 'freeze'
"constant_string".freeze