4
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 5 years have passed since last update.

【Ruby】簡単なインスタンスメソッドとクラスメソッドの使い分け

Posted at

背景

Rubyを使用していて、インスタンスメソッドとクラスメソッドの知識が曖昧だったのでまとめました。

インスタンスメソッドとクラスメソッド

インスタンスメソッド

インスタンスオブジェクトから実行できるメソッド。

クラスメソッド

クラスオブジェクトから実行できるメソッド。

使用例

Person.rb
class Person
  def initialize(name)
    @name = name
  end

  # インスタンスメソッド
  def instance_method
    p @name
  end

  # クラスメソッド
  def self.class_method(filename)
    path = File.join(File.dirname(__FILE__), filename)
    name = File.read.split("\n").map($:strip)[0]
    Person.new(name)
  end
end
インスタンスメソッドを使用する場合
p = Person.new("test")
p.instance_method
-> "test"

クラスメソッドを使用する場合
p = Person.class_method("name.txt")
p.instance_method
-> "test"

結局どう使い分ける?

基本的には、インスタンスメソッドで処理を実現できるか検討する。
外部からデータを取得する処理(外部ファイルからデータを取得し、インスタンスを作成する時など)は、クラスメソッドを使用する。

4
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
4
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?