Ruby/Rubyの基礎知識

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

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

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

Method#curry

新しく追加されたメソッドです。いままでもProc#curryは存在していましたが、Methodもカリー化できるようになります。

lambdaの引数違い

NEWSから引用すると

ArgumentError is no longer raised when lambda Proc is passed as a block, and the number of yielded arguments does not match the formal arguments of the lambda, if just an array is yielded and its length matches.

とのことで、lambdaオブジェクトに渡す引数が想定と違っていた場合、2.1まではArgumentErrorが発生していましたが、2.2では(Procと同じように)例外を発生させなくなりました。

昨年書いた 3/3 ブロックとイテレータ、および手続きオブジェクトProcとlambdaについて - Ruby - All About という記事の中で、

Procとlambdaにはいくつかの違いがあり、おおまかに言うとlambdaの生成する手続きオブジェクトの方が、Procの生成する手続きオブジェクトに比べてメソッドに近い挙動をします。

  1. 引数の数に厳密なのがlambda、寛容なのがProc

と書きましたが、lambdaも引数の数に寛容になり、Procとの差異のひとつがなくなり両者が近づいたことになります。

※ なお、発端Issueは Bug #9605: Chaining "each with index.detect &lambda" raises ArgumentError - Ruby trunk - Ruby Issue Tracking System であると思われます。上記のコード例もここから引用しました。

以上

以上でRuby2.2.の新機能・仕様変更についての紹介は終わりです。

最終ページで「カリー化」をさらっと流してしまいましたが、興味深いテーマなのでRubyを使った解説をいずれ書きたいと思います。

【編集部おすすめの購入サイト】
Amazonで Ruby 関連の書籍をチェック!楽天市場で Ruby 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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