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

class BasicObject

クラス・モジュールの継承リスト: BasicObject

要約

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

性質

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

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

用途

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

例えば、 BasicObject#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

インスタンスメソッド

定義 説明
! self -> bool

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

self != other -> bool

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

self == other -> bool

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

__id__ -> Integer

各オブジェクトに対して一意な整数を返します。あるオブジェクトに対してどのような整数が割り当てられるかは不定です。

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

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

equal?(other) -> bool

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

instance_eval(expr, filename = "(eval)", lineno = 1) -> object
instance_eval {|obj| ... } -> object

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを評価してその結果を返します。

instance_exec(*args) {|*vars| ... } -> object

与えられたブロックをレシーバのコンテキストで実行します。

privateメソッド

定義 説明
method_missing(name, *args) -> object

呼びだされたメソッドが定義されていなかった時、Rubyインタプリタがこのメソッドを呼び出します。

singleton_method_added(name) -> object

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

singleton_method_removed(name) -> object

特異メソッドが Module#remove_method により削除された時にインタプリタから呼び出されます。

singleton_method_undefined(name) -> object

特異メソッドが Module#undef_method または undef により未定義にされた時にインタプリタから呼び出されます。