前 - 上 - 次 - 目次

# Module

  モジュールのクラス．

## スーパークラス:

  `Object`

## メソッド:

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

    比較演算子．`self`がotherのスーパーク ラスである時，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[, assignable])`

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

    >     def attr; @attr; end

    省略可能な第2引数assignableが指定され，その値が真であ る場合には書き込みメソッド`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