Ruby 2.1 では、必須キーワード引数やメソッド定義(def)がシンボルを返す仕様など、言語に重要な構文の進化がもたらされました。
必須キーワード引数 (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
メソッド定義がシンボルを返す (def)
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