Ruby 2.1은 필수 키워드 인수와 메서드 정의의 심볼 반환 등 주목할 만한 문법적 개선 사항을 도입했습니다.
필수 키워드 인수 (Required Keyword Arguments)
기본값이 지정되지 않은 키워드 인수는 반드시 전달해야 하는 필수 인수가 됩니다:
# length는 필수; char의 기본값은 '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
메서드 정의의 심볼 반환
Ruby 2.1+부터 def는 정의된 메서드 이름을 심볼로 반환하므로 인라인 수정자를 적용할 수 있습니다:
class User
# 인라인으로 private 선언
private def secret_token
"secret"
end
# 모듈 데코레이터와 체이닝
memoize def expensive_computation
sleep 2
42
end
end
숫자 및 리터럴 개선
# 유리수 리터럴 접미사 'r'
2/3r # => (2/3)
# 복소수 리터럴 접미사 'i'
3 + 4i # => (3+4i)
# 문자열 동결 최적화: 'freeze'
"constant_string".freeze