上 - 次 - 目次

# Object

  全てのクラスのスーパークラス．このクラスはオブジェクトの一般的 な振舞いを定義しています．

## スーパークラス:

  `Kernel`

## メソッド:

  `self == other`

    二つのオブジェクトが等しいかどうかを判定します． `Kernel`クラスでの定義は二つのオブジェクトが同じ オブジェクトIDを持つかどうかで判定しています．このメソッドは それぞれのクラスでその性質に合わせて再定義されるべきです．

  `self =~ other`

    古いタイプの正規表現比較`obj =~ /RE/`をサポートす るためのメソッドです．デフォルトは `==`と同じ働きをします．

  `self === other`

    このメソッドは`case` 文での比較に用いられます．デフォルトは `==`と同じ働きをしますが， この挙動はサブクラスで所属性のチェックを実現するため 適宜再定義されます．

  `clone`
  `dup`

    オブジェクトの複製を作ります．複製については

    >     obj == obj.clone

    はいつも成立しますが，

    >     obj.equal?(obj.clone)

    は一般的には成立しません．

    `dup`は

    >     def dup
    >       self.clone
    >     end

    と定義されています．

    `clone`や`dup`はオブジェクトをコピーし ますが，オブジェクトの指している先まではコピーしません(つま りshallow copy)．

  `display([out])`

    オブジェクトをoutに出力します．outの省 略値は`$>`です．

    >     def display(out=$>)
    >       out.print self
    >     end
    >     public :display

  `eql?(other)`

    二つのオブジェクトが等しいかどうかを判定します．このメソッド は`Hash`でふたつのキーが 等しいかどうかを判定するのに使われます．このメソッドを再定義 した時には `hash` メソッドも 再定義しなければなりません．

    `eql?`のデフォルトの定義は`eqaul?`と同 じくオブジェクトの同一性判定になっています．

  `equal?(other)`

    二つのオブジェクトが同じオブジェクトIDをとっている時真を返し ます．このメソッドを再定義するべきではありません．

  `extend(module...)`

    引数で指定したモジュールで定義されているメソッドが `self`の特異メソッドとして追加されます．

  `hash`

    オブジェクトのハッシュ値を返します． `Hash`クラスでオブジェク トを格納するのに用いられています．`A.eql?(B)`が成 立する時は必ず`A.hash == B.hash`が成立する必要が あるので，`eql?`を再定義した時には必ずこちらもそ れに合わせて再定義してください．

  `id`

    各オブジェクトについて一意の整数値を返します．

  `initialize(...)`

    ユーザ定義クラスのオブジェクト初期化メソッド．このメソッドは `Class#new`から新し く生成されたオブジェクトの初期化のために呼び出されます．デフォ ルトの動作ではなにもしません．サブクラスではこのメソッドを必 要に応じて再定義されることが期待されています．`initialize`には `Class#new`に与えられた引数が そのまま渡されます．

    `initialize`という名前を持つメソッドは自動的に privateに設定されます．

  `inspect`

    オブジェクトを人間が読める形式の文字列に変換します．

  `instance_eval(expr)`
  `instance_eval{...}`

    オブジェクトのコンテキスト(`self`がオブジェクトに 設定されているメソッド内と同じコンテキスト)でexpr として与えられた文字列を評価します．ブロックが与えられた場合 には文字列ではなくブロックをオブジェクトのコンテキストで評価 しますので，毎回文字列をコンパイルする必要がありません．

    `self`が置き換えられるの で呼び出されるメソッドやインスタンス変数も変わってしまうこと に注意してください．

  `instance_of?(class)`

    オブジェクト`self`がクラスclassのイン スタンスである時，真を返します． `obj.instance_of?(c)`が成立する時には，いつも `obj.kind_of?(c)`も成立します．

  `instance_variables()`

    オブジェクト`self`のインスタンス変数の一覧を配列 として返します．

  `kind_of?(class)`
  `is_a?(class)`

    オブジェクト`self`がクラスclassかそのサブクラスのインスタン スである時，真を返します．

  `method_missing(msg_id, ...)`

    メソッドが定義されていなかった時，このメソッドが呼び出されま す．msg_idはメソッド名(シンボル)で，引数が残りの 引数として渡されます．

  `methods`

    そのオブジェクトが理解できるpublicメソッド名の一覧を配列とし て返します．

  `nil?`

    レシーバが `nil` かどうかをチェックします．

  `private_methods`

    そのオブジェクトが理解できるprivateメソッド名の一覧を配列とし て返します．

  `remove_instance_variable(var)`

    そのオブジェクトから指定した名前のインスタンス変数を取り除き ます．そのオブジェクトがその名前のインスタンス変数を持ってい なくても例外などを発生させません．

  `respond_to?(mesg[,priv])`

    オブジェクトがmesgで指定される public メソッドを持 つ時，真を返します．mesgはシンボル(Fixnum)または 文字列です．省略可能な引数privが与えられ，その値 が真である時，private メソッドに対しても真を返します．

  `send(symbol[, args...])`

    symbolで指定されるメソッドを引数argsと ともに呼び出します．イテレータとして呼び出された時には指定さ れたメソッドをイテレータ呼出しします．

  `singleton_method_added(id)`

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

  `singleton_methods`

    そのオブジェクトに対して定義されている特異メソッド名の一覧を 配列として返します．

  `taint`

    オブジェクトの「汚染マーク」をセットします．

  `tainted?`

    オブジェクトの「汚染マーク」がセットされている時真を返します．

  `to_s`

    オブジェクトの文字列表現を返します．このメソッドは `print` や `sprintf`の 内部で使われています．

  `to_a`

    オブジェクトを配列に変換します．普通に配列に変換できないよう なオブジェクトは自身を含む1要素の配列に変換されます．

  `type`

    レシーバのクラスを返します．

  `untaint`

    オブジェクトの「汚染マーク」を取り除きます．汚染マークを取り 除くことによる危険性はプログラマが責任を負う必要があります． セキュリティレベルが3以上の場合は取り除くことができません．

上 - 次 - 目次

matz@netlab.co.jp