Ruby/Rubyの基礎知識

Ruby2.0の新機能、Module#prependの紹介

Module#prependが実現するMix-in方式をincludeと比較しながら紹介し、応用編としてRailsのalias_method_chain処理をprependに書き換えます

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

Module#prependとは

Ruby2.0から追加された新機能のひとつに、Module#prependがあります。これはモジュールの機能を組み込む(Mix-inする)ときに使われるinclude、extendに続く3個目の方法であり、その特徴を簡潔に言うと

Module#include に似た、Module#prepend という機能が追加されました。Module#include と異なり、prepend するクラス (モジュール) よりもメソッド探索順序を前にもってくる仕組みになります。

Rubyist Magazine - Ruby 2.0.0 の注意点やその他の新機能

というものです。

Moduleの使い方

Module#prependの機能を説明する前に、まずRubyのモジュールについて簡単に復習したいと思います。

Rubyのモジュールはクラスに似た機能ですが、インスタンスを生成することができません。また、クラスのように継承させることもできません。

それでは何に使われるかというと、名前空間を区切ったり、機能を切り出して「つまみ食い」的にいろいろな場所へ取り込めるようにしたり、です。そして「取り込む」ときに使われるメソッドが先にも名前を出したincludeとextend、定義クラスまで明示するとModule#includeObject#extendです。

ただ、extendは特異クラスにモジュールの機能を組み込むメソッドであり少々prependとは毛色が違うため今回は脇においておき、次のページでは「includeとprependの比較」という形で挙動を見ていこうと思います。

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

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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