Ruby 3.3 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > 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
|
オブジェクトのメソッド name を args を引数にして呼び出し、メソッドの結果を返します。 |
|
equal?(other) -> bool
|
オブジェクトが other と同一であれば真を、さもなくば偽を返します。 |
|
instance_eval(expr, filename = "(eval)", lineno = 1) -> object
|
オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを評価してその結果を返します。 |
|
instance_exec(*args) {|*vars| ... } -> object
|
与えられたブロックをレシーバのコンテキストで実行します。 |
定義 | 説明 | |
---|---|---|
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 により未定義にされた時にインタプリタから呼び出されます。 |