Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のコンテンツ ホームへ戻る

組み込みモジュール

Rubyでは言語仕様に最初から組み込まれているモジュールがあります。組み込みモジュールを使うことによって、あらかじめ用意されている機能を新しく作るクラスやモジュールに追加することができます。そのモジュールの中から代表的なものを紹介しながら説明をおこないます。

Comparableモジュール

Comparableモジュールは比較演算子をクラスに加えるモジュールです。ArrayクラスやStringクラスの大小関係を知っているオブジェクトは、このモジュールをインクルードして使っています。
ただし、このモジュールを使うには<=>演算子を定義しなくてはいけません。この演算子を使って比較するメソッドのまとまりがComparableモジュールです。

class Foo
  include Comparable
  attr_accessor :num
  def initialize(num)
    @num = num
  end
  def <=>(other)
    return @num <=> other.num
  end
end
foo = Foo.new(10)
bar = Foo.new(5)
p foo < bar
p foo > bar

このようにComparableモジュールは<=>メソッドを定義することで、何を比較するのかを決められます。他にもComparableモジュールにはメソッドが定義されています。リファレンスマニュアルで詳しく説明されていますので、そちらをご参照ください。

Enumerableモジュール

Enumerableモジュールは繰り返しをおこなうクラスのために用意されたモジュールであり、このモジュールのメソッドはeachメソッドを必要としています。このモジュールを使うことによって、さまざまなイテレータを定義することができます。実際に定義した例が以下になります。

class MetaSyntax
  include Enumerable
  def initialize
    @variables = []
  end
  def add(value)
    @variables << value
  end
  def each
    @variables.each do |variable|
      yield variable
    end
  end
end
ary = MetaSyntax.new
ary.add("foo")
ary.add("bar")
ary.add("baz")
ary.each do |i| puts i end
ary.each_with_index do |item, index|
  puts("これは#{index}番目の#{item}です")
end

クラスの中にeachメソッドを定義することによって、そのクラスにEnumerableモジュールをインクルードできました。これでEnumerableモジュールに定義されているメソッドを使えます。each_with_indexメソッドはEnumerableモジュールに定義されているメソッドです。他にもEnumerableモジュールにはメソッドが定義されています。リファレンスマニュアルで詳しく説明されていますので、そちらをご参照ください。


次のコンテンツ ホームへ戻る