CodeBox CodeBox

【Ruby】クラスメソッドとインスタンスメソッドの扱い

Ruby / Rails
けい

ポイント

クラスに対して使うメソッドは、『クラスメソッド』

  • User.〇〇などクラスに対して、使用できるメソッドをクラスメソッドと呼ぶ。
  • メソッド名の前にself.をつける
  • インスタンスには使えない


クラス全体で使用できる変数は、「クラス変数」

  • クラス内であれば、どこでも使用できる
  • @@変数名とする


インスタンスに対して使うメソッドは、『インスタンスメソッド』

  • @user.〇〇やuser.〇〇などインスタンスに対して、使用できるメソッドをインスタンスメソッドと呼ぶ。
  • クラス内で定義したメソッドは、インスタンスメソッドとなる


インスタンスに対して使用できる変数は、「インスタンス変数」

  • インスタンスメソッド内で使用できる
  • @変数名とする


参考コード

class Team
  @@all_teams_member = 0


  def self.count_all_team_members
    print "全メンバー数は、#{@@all_teams_member}人です"
  end


  def initialize(coach,lanking)
    @coach=coach
    @lanking=lanking
    @members=[]
  end


  def join_team(name)
    @members.push(name)
    @@all_teams_member += 1
  end


  def print_members()
    print @members
  end
end


# USA Team
team_usa = Team.new("Mike", 3)
usa_members = %w(Anderson, John, Amanda)
usa_members.each do | member |
  team_usa.join_team(member)
end
team_usa.print_members()


# Japan Team
team_jp = Team.new("斎藤", 2)
jp_members = %w(宮本, 渡辺, 佐藤)
jp_members.each do | member |
  team_jp.join_team(member)
end
team_jp.print_members()


# All Team Member Count
Team.count_all_team_members

ABOUT ME

けい
ベンチャーのフロントエンジニア。 主にVueとTypescriptを使っています。ライターのための文字数カウントアプリ:https://easy-count.vercel.app/