ぷろぐらみんぐ学習帳

プログラミング初心者の学習記録です。2020年12月に勉強開始。

Rubyにおけるメソッド(分類とか書き方とかの整理)

かなり混乱してきたので調べて整理しました。誤りがあればご指摘お願いします。

 

●メソッドとは●

オブジェクト指向における「操作」を定義したもの

Rubyでは全ての操作がメソッドとして実装されている

 

メソッドの実行の流れ

 オブジェクトにメッセージを送る → オブジェクトがメッセージを受け取る

 

そのためメソッドにおけるオブジェクトレシーバーとも呼ばれる。

 

●メソッドの分類● ← レシーバーで分類

インスタンスメソッド

・クラスメソッド

・関数的メソッド

 

インスタンスメソッド>

メソッドのレシーバーがインスタンスのとき。いちばんよく見る。

 

<クラスメソッド>

メソッドのレシーバーがクラスであるとき。

インスタンスを生成するメソッド(クラス名.new)など。

RailsActiveRecordメソッドも

 

<関数的メソッド>

レシーバーがない(本当はあるが記述しない)メソッド。putsとか。

 

 

 

●書き方(定義と呼び出し)●

インスタンスメソッドとクラスメソッドについて

 

〜だめな例〜

class Calculation

    def addition(a, b, c) ←これはインスタンスメソッド

        puts a + b + c

    end

end

 

addition(1,2,3) ← メソッドを呼び出すときはメソッド名だけ書いても✗

 

 

〜正しい書き方①:クラスメソッドとして〜

class Calculation

    def self.addition(a, b, c) ← self.メソッド名(仮引数)

        puts a + b + c

    end

end

 

Calculation.addition(1,2,3)  ← クラス名.メソッド名(実引数)で呼び出し

 

〜正しい書き方②:インスタンスメソッドとして〜

class Calculation

    def addition(a, b, c) ← メソッド名(仮引数)

        puts a + b + c

    end

end

 

calculation = Calculation.new  ← まずインスタンスを生成

calculation.addition(1,2,3) ← インスタンス.メソッド名(実引数)で呼び出し

 

定義や分類については「たのしいRuby 第6版」を参考にしました。

少しすっきり〜!