クラスにクラスメソッドを定義する方法
クラスにメソッドを定義する方法は様々あります。
ただし、クラスメソッドを使わずに、モジュールをエクステンドした方が良い場合もあるそうなので、状況に応じて使っていくと良いみたいです。
1
これは見ることが多いですね。
class Foo
def self.bar
:baz
end
end
2
なんか周りくどい、、、
class Foo
end
def Foo.bar
:baz
end
3
あまり見ないですねー。
def (Foo = Class.new).bar
:baz
end
4
これもよく見る書き方だと思います。
class Foo
class << self
def bar
:baz
end
end
end
5
あまりこんな書き方をしませんが、以下のように書くこともできます。
class Foo
end
class << Foo
def bar
:baz
end
end
6
instance_evalを使った書き方もあるみたいですが、あまり使わないようです。
Foo.instance_eval do
def bar
:baz
end
end
7
こんな書き方もできますね。
class Foo
define_singleton_method(:bar) do
:baz
end
end