Ruby 2.1 introduceerde opmerkelijke syntaxisverbeteringen, waaronder verplichte sleutelwoordargumenten en de teruggave van symbols door def.
Verplichte sleutelwoordargumenten
Sleutelwoordargumenten zonder standaardwaarde worden strikt verplicht:
# length is verplicht; char heeft standaard '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
Methodedefinities retourneren symbols
In Ruby 2.1+ retourneert def de methodenaam als een Symbol, wat inline modifiers mogelijk maakt:
class User
# Inline als private instellen
private def secret_token
"secret"
end
# Koppelen met module-decorators
memoize def expensive_computation
sleep 2
42
end
end
Numerieke & Literale verbeteringen
# Rationale literal-suffix 'r'
2/3r # => (2/3)
# Complexe literal-suffix 'i'
3 + 4i # => (3+4i)
# Optimalisatie van bevroren strings: 'freeze'
"constant_string".freeze