Rubyリファレンス: Home

include (Module)

Edit   History

標準クラス・モジュール > Module > include

private

include(other_mod, ...)

includeメソッドは、クラスやモジュールに他のモジュールをインクルード(Mix-in)します。引数にはモジュールを指定します(複数指定できます)。戻り値はクラスやモジュール自身です。

引数に指定できるのはモジュールだけで、クラスは指定できません。モジュールにモジュールをインクルードすることはできます。

次の例では、クラスBookCityにモジュールSearchableをインクルードしています。BookCityのオブジェクトでは、Searchableのインスタンスメソッドgoogleを呼び出せるようになります。

require 'uri'
module Searchable
  def google
    "http://www.google.co.jp/search?q=#{URI.escape(to_s)}"
  end
end
 
class Book
  include Searchable
  attr_accessor :title
  
  def initialize(title)
    @title = title
  end
  def to_s() @title end
end
 
class City
  include Searchable
  attr_accessor :name
  
  def initialize(name)
    @name = name
  end
  def to_s() @name end
end
 
book = Book.new("Ruby Programming Language")
puts book.google
city = City.new("武蔵野市")
puts city.google
http://www.google.co.jp/search?q=Ruby%20Programming%20Language
http://www.google.co.jp/search?q=%E6%AD%A6%E8%94%B5%E9%87%8E%E5%B8%82

詳細

includeメソッドの実装は、引数の各モジュールに対してappend_featuresメソッドとincludedメソッドを呼び出すというものです。インクルードの機能の本体はappend_featuresにあります。

関連項目