0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クラスメソッド

Last updated at Posted at 2023-05-08

クラスにクラスメソッドを定義する方法

クラスにメソッドを定義する方法は様々あります。
ただし、クラスメソッドを使わずに、モジュールをエクステンドした方が良い場合もあるそうなので、状況に応じて使っていくと良いみたいです。

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?