【クラスメソッド、クラス変数】Rubyの基礎【学習】

Ruby_logoRuby
スポンサーリンク

クラスメソッド

クラスメソッドとはクラスからオブジェクトを生成せずに直に呼び出すことができすメソッドです。
以下は3つのクラスメソッドが定義されています。

まずはselfを先頭に記載する方法で「first_method」を記載してあります。

複数をクラスメソッドとして記載する場合は「class << self」と「end」で挟んで宣言する方法で、「second_method」と「third_method」が記載してあります。

class Foo
  def self.first_method
    puts '一つ目'
  end

  class << self
    def second_method
      puts '二つ目'
    end
    
    def third_method
      puts '三つ目'
    end
  end
end

Foo.first_method
Foo.second_method
Foo.third_method

->
一つ目
二つ目
三つ目

#ただしオブジェクトから呼び出すことはできない
Foo.new.foo
->
NoMethodError: undefined method `foo' for #<Foo:0x00007fdcf103cac0>

クラス変数

クラス変数はそのクラスのインスタンス全てで共有される変数です。

以下のようにクラス変数はクラス内に「@@」を先頭につけて定義します。
インスタンスメソッドからでもクラスメソッドからでもアクセスすることができ、異なるオブジェクトであっても同じクラスであれば値が共有されます。

Foo.first_method
Foo.second_method
Foo.third_method

class Num
  @@num = 1

  def increment
    @@num += 1
  end

  def decrement
    @@num -= 1
  end
  
  def num
    puts @@num
  end

  def self.num
    puts @@num
  end
end

foo = Num.new
foo.num
foo.increment
foo.num

bar = Num.new
bar.num
bar.increment
bar.num
bar.decrement
bar.num

->
1
2
2
3
2

フリーランスを目指すなら【テックパートナーズカレッジ】

未経験者向けWEBスクール【SHElikes】

コメント

タイトルとURLをコピーしました