- - - 目次

Module

モジュールのクラス.

スーパークラス:

Object

メソッド:

self < other
self <= other
self > other
self >= other

比較演算子.selfotherのスーパーク ラスである時,self > otherが成立します.

self === obj

このメソッドは主にcase 文での比較に用いられます。 objがselfとkind_of? の関係がある時,真になります.つまり, case ではクラス,モジュールの所属関係をチェックすることになります.

alias_method(new,old)

aliasと同様にメ ソッドの別名を定義します.違いは以下の通りです.

  • メソッド名は文字列またはID(整数)で指定する.
  • 大域変数の別名をつける機能は無い.

append_features(module_or_class)

モジュール(あるいはクラス)に別のモジュールの機能を追加します. Module#include の実体です.

attr(name[, asignable])

そのモジュールをインクルードするクラスのインスタンスに対して nameという属性とそのアクセスメソッドを定義します. アクセスメソッドの定義は次の通りです.

def attr; @attr; end

省略可能な第2引数asignableが指定され,その値が真であ る場合には書き込みメソッドname=も同時に定義され ます.その定義は以下の通りです.

def attr=(val); @attr = val; end

アクセスメソッドを再定義することで属性の挙動を変更できます. 例えば書き込みメソッドを以下のように定義することで代入された 値をプリントできます.

attr("test", TRUE)
def test=(val)
  print("test was ", @test, "\n")
  print("and now is ", @test = val, "\n")
end
attr_reader(name, ...)

nameで指定された名称の属性の読みだしメソッドを定義します.

attr_writer(name, ...)

nameで指定された名称の属性の更新メソッド (name=)を定義します.

attr_accessor(name, ...)

nameで指定された名称の属性に対して読みだしメソッ ドと更新メソッドの両方を定義します.

ancestors

そのモジュールでインクルードしているモジュールを優先順位順に 配列に格納して返します.

class_eval(src)
class_eval{...}

module_evalの別名.

constants

そのモジュール(またはクラス)で定義されている定数名の配列を返 します.

const_defined?(name)

モジュールにnameで指定される名前の定数が定義され ている時真を返します.

const_get(name)

モジュールに定義されているnameで指定される名前の 定数の値を取り出します.定数が定義されていない時には例外 NameErrorが発生します.

const_set(name, value)

モジュールにnameで指定された名前の定数を valueという値として定義します.そのモジュールにお いてすでにその名前の定数が定義されている場合,例外 NameErrorが発生します.

extend_object(object)

オブジェクトにモジュールの機能を追加します. Object#extend の実体です.

include(module...)

指定されたモジュールの性質(メソッドや定数)を追加します. includeは多重継承の代わりに用いられるMix-inを実 現するために使われます.

included_modules

インクルードされているモジュールの配列を返します.

instance_methods

そのモジュールで定義されているメソッド名の一覧を返します.

method_added(id)

メソッドが追加された時にインタプリタから呼び出されます.

method_defined?(id)

インスタンスがidで指定されたメソッドを持っている 時,真を返します.

module_eval(expr)
module_eval{...}

モジュールのコンテキストでexprとして与えられた文 字列を評価します.ブロックが与えられた場合には文字列ではな くブロックをモジュールのコンテキストで評価します.

モジュールのコンテキストでは

  • self
  • インスタンス変数
  • 定数
  • メソッド定義
がそのモジュールの定義の中にあるのと同じように評価されます.ただ し,ローカル変数はmodule_evalの外側のスコープと 共有します.

module_function(name...)

nameで指定されたメソッドをモジュール関数にします. モジュール関数とは通常のメソッドであると同時にモジュール(ま たはクラス)の特異メソッドでもあるようなメソッドです.例えば Mathモジュールで定義さ れているメソッドがモジュール関数です

name()

モジュールの名前を返します.

private(name...)

引数が与えられない時,今後このクラスまたはモジュール定義内で 新規に定義されるメソッドを関数形式でだけ呼び出せるように (private)設定します.

引数が与えられた時には引数によって指定されたメソッドをprivate に設定します.

例:

module Foo
  def foo1() 1 end	# デフォルトではpublic
  private		# 可視性をprivateに変更
  def foo2() 2 end	# foo2はprivateメソッド
end

foo = Foo.new
foo.foo1
       => 1
foo.foo2
       error--> private method `foo2' called #<Foo:0x4011ad8c>(Foo)

private_instance_methods

そのモジュールで定義されているprivateメソッド名の一覧を返します.

protected(name...)

引数が与えられない時,今後このクラスまたはモジュール定義内で 新規に定義されるメソッドをprotectedに設定します.protectedと はそのメソッドが定義されているクラスまたはそのサブクラスから しか呼び出すことができないという意味です.

引数が与えられた時には引数によって指定されたメソッドをprotected に設定します.

public(name...)

引数が与えられない時,今後このクラスまたはモジュール定義内で 新規に定義されるメソッドをどんな形式でも呼び出せるように (public)設定します.

引数が与えられた時には引数によって指定されたメソッドをpublic に設定します.

例:

def foo() 1 end
foo
       => 1
self.foo	# the toplevel default is private
       error--> private method `foo' called for "main"(Object)

def bar() 2 end
public :bar	# visibility changed (all access allowed)
bar
       => 2
self.bar
       => 2

private_class_method(name, ...)
public_class_method(name, ...)

nameで指定したクラスメソッド(クラスの特異メソッド) の可視性を変更します.

remove_const(name)

nameで指定した定数を取り除きます.もし指定した定 数がそのモジュール(またはクラス)で定義されていない時, NameError例外が発生します.

remove_method(name)

nameで指定したメソッドをモジュールから取り除きま す.もし指定したメソッドが存在しない時には NameError例外が発生します.

undef_method(name)

nameで指定したメソッドの定義を取り消します. undefとの違いは メソッド指定を文字列またはID(整数)で行う点です.

クラスメソッド:

nesting

このメソッドを呼び出した時点でのクラス/モジュールのネスト情 報を配列に入れて返します.

new

新しく名前の付いていないモジュールを生成します.


- - - 目次

matz@netlab.co.jp