Ruby 2.1 wprowadziło przełomowe usprawnienia składniowe, w tym wymagane argumenty nazwane (keyword arguments) oraz zwracanie symbolu nazwy metody przez def.
Wymagane argumenty nazwane (Keyword Arguments)
Argumenty kluczowe bez wartości domyślnej stają się bezwzględnie wymagane:
# length jest wymagane; char ma wartość domyślną '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
Definicje metod zwracają symbole
W Ruby 2.1+ instrukcja def zwraca nazwę metody jako Symbol, co umożliwia modyfikatory w tej samej linii:
class User
# Zmiana na private w linii definicji
private def secret_token
"secret"
end
# Łączenie z dekoratorami modułów
memoize def expensive_computation
sleep 2
42
end
end
Usprawnienia liczb i literałów
# Przyrostek literału ułamkowego 'r'
2/3r # => (2/3)
# Przyrostek liczby zespolonej 'i'
3 + 4i # => (3+4i)
# Optymalizacja zamrażania ciągów znaków: 'freeze'
"constant_string".freeze