Ruby/Rubyの基礎知識

Ruby2.2の変更点と新機能の紹介(2ページ目)

Ruby2.2が2014年12月にリリースされました。2.1からの変更点や新機能を解説します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

Hashリテラルのkey

Feature #4276: Allow use of quotes in symbol syntactic sugar for hashes - Ruby trunk - Ruby Issue Tracking System

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_setBinding#local_variable_getにも通じる話で、それぞれbinding.eval("#{var} = #{val}")binding.eval("#{var}")を実行しても同じ結果が得られます。

Binding#receiver

Binding#reciverは、そのbindingオブジェクトが呼び出されたもともとのレシーバ自身を返すメソッドです。

Kernel#itself

Kernel#itselfは「恒等関数」と呼ばれ、たとえばHaskellではid関数として提供されています。これはレシーバそのものを返すだけのメソッドで、Kernelモジュールに定義されていることからわかるように、(ほぼ)すべてのオブジェクトで使えます。たとえばブロックを受け取って動作するメソッドに対して引数自身を評価させるときに便利です。

次のページはFloat, Enumeralbeなどの機能追加・修正です。

  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます