はじめに
Rubyでつまずいた項目のひとつ、クラスメソッド。
わからなかったことを書いていきます。
クラスとインスタンスについては[こちら][link-1] 。
[link-1]:https://qiita.com/fishmans0120/items/569cd9ab37b89c0c1726
メソッドとは
前提条件として、メソッドとは何か。
メソッドとは、データが持つ「動作」です。
車に当てはめて考えてみると、
車というデータが持つ動作は「走る、止まる、ウィンカーを出す」などです。
クラスメソッドとは
クラスメソッドを定義したクラス自身が使えるメソッド。
クラスで共通の情報を持った処理に使うことができます。
定義の方法は他のメソッドと同じですが、メソッド名の前に.selfをつけます。
class Car
def self.run # メソッド名の前にselfをつけてクラスメソッドを定義します
puts "走ります"
end
end
Car.run # クラス名.メソッド名で、定義したクラスメソッドを実行できます
(2020.6.29追記。ご指摘ありがとうございます)
もしくは class << self から end の間にメソッドを書く記法もあります。
ネストは1段深くなりますが、クラスメソッドをたくさん定義したい場合はメソッド名の前に毎回.selfをつけなくても済みます。
class Car
class << self
def run
puts "走ります"
end
end
end
最後に
クラスメソッドの注意点は以下の通り。
・定義するときには.selfをメソッド名の前につける。
・もしくは class << self から end の間にメソッドを書く記法もある。
・このメソッドは、クラスのみに用いることができます。
最後まで読んでいただきまして、ありがとうございました。