Object

参考:

class Object (Ruby 2.6.0)

Object | Ruby リファレンス (ref.xaio.jp)

BasicObject

参考:

class BasicObject (Ruby 2.6.0)

is_a? / kind_of?

指定したクラスもしくはその子孫クラスのインスタンスである場合 true を返す。

また、指定したモジュールをインクルードしている場合にも true を返す。

参考:

instance method Object#is_a? (Ruby 2.6.0)

is_a?, kind_of? (Object) | Ruby リファレンス (ref.xaio.jp)

オブジェクトのクラスを調べるには? | kinopyo blog

Ruby でちゃんとオブジェクトの型チェック (整数) してみた – Qiita

instance_of?

指定したクラスの直接のインスタンスである場合 true を返す。

参考:

instance method Object#instance_of? (Ruby 2.6.0)

オブジェクトのクラスを調べるには? | kinopyo blog

class

インスタンスメソッド内で自身のクラスを取得する。

class A
  def klass
    self.class
  end
end

self.class はオブジェクトインスタンスのクラスを返す。

> A.new.klass
=> A

参考:

オブジェクトのクラスを調べるには? | kinopyo blog

instance method Object#class (Ruby 2.6.0)

object_id / __id__ / equal?

参考:

instance method Object#object_id (Ruby 2.6.0)

instance method BasicObject#__id__ (Ruby 2.6.0)

instance method Object#equal? (Ruby 2.6.0)

hash / eql?

オブジェクトのハッシュ値を返す。Hash クラスでオブジェク トを格納するのに用いられる。

デフォルトでは object_id を返す。Integer, Symbol, String は組み込みのハッシュ関数が使われる。

参考:

Ruby の Object#hash について調べてみた – Qiita

Ruby で自分で作ったクラスをハッシュのキーに設定する場合の話 | belog

自作クラスのオブジェクトをハッシュキーにするときの小技。| このブログは証明できない。

instance method Object#hash (Ruby 2.6.0)

instance method Object#eql? (Ruby 2.6.0)

inspect

inspect で表示される16進数の値は、object_id を 1 ビットシフトした値。

obj = Object.new
obj.object_id
# => 1234xxxx5678
obj.inspect
# => "#<Object:0x0000abcdxxxx1234>"
"%#018x" % (obj.object_id << 1)
# => "0x0000abcdxxxx1234"
0x0000abcdxxxx1234 >> 1
# => 1234xxxx5678

参考:

オブジェクトを表示する時の 16進数って何なの? ( Object#inspect / Object#to_s ) – Qiita

instance method Object#inspect (Ruby 2.6.0)

In Ruby, why does inspect() print out some kind of object id which is different from what object_id() gives? – Stack Overflow

define_singleton_method

特異メソッドを定義する。

参考:

Ruby でメソッドの一時的な上書き | 氾濫原

ruby でインスタンスのメソッドを上書きする (もしくは wrap する) – Qiita

Ruby のクラスメソッド定義まとめ – Qiita

特異メソッドについて – Qiita

オブジェクトにメソッドを追加する特異メソッド | 集中力なら売り切れたよ

instance method Object#define_singleton_method (Ruby 2.6.0)

define_singleton_method (Object) – Rubyリファレンス

undef

undef したメソッドは親クラスに同名のメソッドがあっても呼び出されず、NoMethodError が発生する。

参考:

ruby の undef について | rochefort’s blog

undef – クラス/メソッドの定義 (Ruby 2.6.0)

practical use for undef – Stack Overflow

Why would you want to undefine a method in ruby? – Stack Overflow

undef / undef_method と remove_method の違い

参考:

undef_method と remove_methodの違い – Qiita

undef | Ruby をラクガク

Ruby undef vs. remove_method – GitHub Gist

When to use undef_method, and when to use remove_method? – Stack Overflow

undef_method

参考:

instance method Module#undef_method (Ruby 2.6.0)

remove_method

参考:

instance method Module#remove_method (Ruby 2.6.0)

remove_method (Module) | Rubyリファレンス (ref.xaio.jp)

特異メソッドを undef する

instance_eval の中で undef する。

obj.instance_eval { undef :singleton_method }

参考:

undef singleton method from ruby object – Stack Overflow

self

カレントオブジェクトを表すキーワード

参考:

ruby の self の意味と使い方 – Qiita

カレントオブジェクト self について – Qiita

Ruby の self について | DesignAssembler

ruby の self は何が言いたいのかわからない。- スタック・オーバーフロー

BasicObject で使えないメソッド

  • attr_accessor

参考:

あれもこれも、Ruby ではメソッド。 – Qiita

ObjectSpace._id2ref

object_id からオブジェクトを復元する。

obj1 = "hello"
obj1.object_id
# => 1234xxxx5678
obj2 = ObjectSpace._id2ref(obj1.object_id)
# => "hello"
obj1.object_id == obj2.object_id
# => true

参考:

Ruby で object_id から instance を探す方法 – Qiita

module function ObjectSpace.#_id2ref (Ruby 2.6.0)

Can I or SHOULD I find an object by the object_id attribute in ruby? – Stack Overflow

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA