Output Diary

プログラミング × 読書 のアウトプットを発信しています

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

  
クラスを作るメソッドは2種類あります。
 
その2種類とは、
インスタンスメソッド」
「クラスメソッド」です。
 
 
これら2つの違いは、
 
インスタンスをレシーバとするか、
クラスをレシーバにするかという違いです。
 
 
 

レシーバとはナニ?

レシーバとは、
メソッドが呼びだされるオブジェクトのことをいいます。
 
どこの部分ー??ってなった方もいると思うので
もっと簡単に説明すると、
 
 
5.even? ののレシーバはで、
["ポテト", "ドリンク", "サラダ"].sizeののレシーバは["ポテト", "ドリンク", "サラダ"]といった感じです。
 
 
 
クラスメソッドを定義するには、
 
defメソッド名を書く所で、
メソッド名の前にself.をつけます。
 
 
クラスメソッドを呼び出すときには、
クラス名に続いて.メソッド名で呼び出します。
 
class Cafe
def self.welcome
"いらっしゃいませ"
end
end
 
puts Cafe.welcome
 
クラスメソッドはクラスが実行するので、
オブジェクトを作ることなく呼び出すことができます。
 

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

 

f:id:kina_kq:20210312132747j:plain

 
 

継承

継承を使ってクラスを分けることができます。
 
クラスの継承関係を見るときは,
ancestorsメソッドを使います。
 
ancestorsメソッドは、
そのクラスの継承関係(親クラス郡)を表示するメソッドです。
 
 

モジュール

 
モジュールを使うと、
メソッドを共同利用することが出来ます。
 
メソッドを共同利用する手順
 
1. モジュールを作る
2. モジュールにメソッドを定義する
3. モジュールのメソッドをクラスで使う

 

モジュールの定義
module モジュール名
end
 
クラスにモジュールをインクルードする
 
class クラス名
 include モジュール名
end
 
 
 
Enumerableモジュール
配列に対して「全要素が該当しない」ことを調べる
none?メソッドがあります。
 
 
 
 
 

includeとrequire_relativeの違い

 
include は、
モジュールを渡してそのモジュールに書かれたメソッドを暮らすから利用出来るようにするメソッド
require_relativeは、
ファイル名を渡してそのファイルに定義されたクラスやモジュールを使えるようにするメソッド
 
 
 
という所で今日は以上です!
今日も素敵な一日をお過ごしくださいー
 

f:id:kina_kq:20210312133602p:plain