Hashリテラルのkey
2.1までのRubyではHashのkeyに空白やハイフン等"word"以外の文字を含む文字列を使った場合、ハッシュロケット形式で書くしかありませんでしたが、2.2の変更により、後ろに:
を置くことで新シンタックスでHashを記述できるようになりました。
true, false, nilの凍結
Feature #8923: Frozen nil/true/false - Ruby trunk - Ruby Issue Tracking System
true, false, nilがfrozenになりました。
オブジェクトが凍結状態であるとはどういうことか、については freeze (Object) - Rubyリファレンス を参照して下さい。
Binding#local_variables
以前から定義済ローカル変数を一覧するKernel#local_variables
メソッドは存在していましたが、Binding#local_variables
はprivateでした。それがpublicに利用可能となった変更です。
なお、bindingの成り立ちを考えれば当然ではありますが、この2.2の変更がなくてもbinding環境下でevalしてKernel#local_variables
を呼び出しても同じ結果が得られます。これはBinding#local_variable_set
やBinding#local_variable_get
にも通じる話で、それぞれbinding.eval("#{var} = #{val}")
、binding.eval("#{var}")
を実行しても同じ結果が得られます。
Binding#receiver
Binding#reciverは、そのbindingオブジェクトが呼び出されたもともとのレシーバ自身を返すメソッドです。
Kernel#itself
Kernel#itself
は「恒等関数」と呼ばれ、たとえばHaskellではid
関数として提供されています。これはレシーバそのものを返すだけのメソッドで、Kernel
モジュールに定義されていることからわかるように、(ほぼ)すべてのオブジェクトで使えます。たとえばブロックを受け取って動作するメソッドに対して引数自身を評価させるときに便利です。
次のページはFloat, Enumeralbeなどの機能追加・修正です。