Object
参考:
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)
define_singleton_method
特異メソッドを定義する。
参考:
ruby でインスタンスのメソッドを上書きする (もしくは wrap する) – 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
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 について | DesignAssembler
ruby の self は何が言いたいのかわからない。- スタック・オーバーフロー
BasicObject で使えないメソッド
attr_accessor
参考:
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