Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > BasicObjectクラス

class BasicObject

クラスの継承リスト: BasicObject

要約

特殊な用途のために意図的にほとんど何も定義されていないクラスです。 Objectクラスの親にあたります。Ruby 1.9 以降で導入されました。

性質

BasicObject クラスは Object クラスからほとんどのメソッドを取り除いたクラスです。

Object クラスは様々な便利なメソッドや Kernel から受け継いだ関数的メソッド を多数有しています。 これに対して、 BasicObject クラスはオブジェクトの同一性を識別したりメソッドを呼んだりする 最低限の機能の他は一切の機能を持っていません。

用途

基本的にはほぼすべてのクラスの親は Object と考えて差し支えありません。 しかし、ある種のクラスを定義する際には Object クラスは持っているメソッドが多すぎる 場合があります。

例えば、 Object#method_missingを利用して Proxy パターンを実装する場合には Object クラスに定義済みのメソッドはプロクシできないという問題が発生します。 このような場合に Object ではなく BasicObject から派生して問題を解決できます。

注意

通常のクラスは Object またはその他の適切なクラスから派生すべきです。 真に必要な場合にだけ BasicObject から派生してください。

class Proxy < BasicObject
  def initialize(target)
    @target = target
  end

  def method_missing(message, *args)
    @target.__send__(message, *args)
  end
end

proxy = Proxy.new("1")
proxy.to_i #=> 1

インスタンスメソッド

定義 説明
! -> bool

オブジェクトを真偽値として評価し、その論理否定を返します。

self != other -> bool

オブジェクトが other と等しくないことを判定します。

self == other -> bool

オブジェクトが other と等しければ真を、さもなくば偽を返します。

__send__(name, *args) -> object
__send__(name, *args) { .... } -> object

オブジェクトのメソッド name を args を引数にして呼び出し、メソッドの結果を返します。

equal?(other) -> bool

オブジェクトが other と同一であれば真を、さもなくば偽を返します。