instance_evalやclass_evalの記事を書いていてメモしたくなったのでメモする。
クラスメソッド
クラス自身が使えるメソッド。代表的にはnewとかcreateとか。
クラスメソッドはselfで定義する。
class Hoge
def self.a
# 処理
end
end
Hoge.a
インスタンスメソッド
インスタンスに対して使えるメソッド。インスタンスとはクラスから生成したオブジェクトのこと。
インスタンスメソッドを定義したクラスでインスタンス毎に対して使用できる。
class Hoge
def a
# 処理
end
end
hoge = Hoge.new
hoge.a
特異メソッド
特定のインスタンス(オブジェクト)に対してのみ使用できるメソッド。
class Hoge
end
h = Hoge.new
h_fail = Hoge.new
def h.a
p "ハロ"
end
h.a
"ハロ"
# 呼び出せない
h_fail.a
undefined method `a' for #<Hoge:0x> (NoMethodError)
まとめ
- クラスメソッド・・クラス自体が使える
- インスタンスメソッド・・インスタンスが使える
- 特異メソッド・・特定のインスタンスのみ使える