【Ruby】インスタンスメソッドとクラスメソッド
クラスを作るメソッドは2種類あります。
その2種類とは、
「インスタンスメソッド」と
「クラスメソッド」です。
これら2つの違いは、
インスタンスをレシーバとするか、
クラスをレシーバにするかという違いです。
レシーバとはナニ?
レシーバとは、
メソッドが呼びだされるオブジェクトのことをいいます。
どこの部分ー??ってなった方もいると思うので
もっと簡単に説明すると、
5.even? ののレシーバは5で、
["ポテト", "ドリンク", "サラダ"].sizeののレシーバは["ポテト", "ドリンク", "サラダ"]といった感じです。
クラスメソッドを定義するには、
defメソッド名を書く所で、
メソッド名の前にself.をつけます。
クラスメソッドを呼び出すときには、
クラス名に続いて.メソッド名で呼び出します。
class Cafe
def self.welcome
"いらっしゃいませ"
end
end
puts Cafe.welcome
クラスメソッドはクラスが実行するので、
オブジェクトを作ることなく呼び出すことができます。
インスタンスメソッドとクラスメソッドまとめ
継承
継承を使ってクラスを分けることができます。
クラスの継承関係を見るときは,
ancestorsメソッドを使います。
ancestorsメソッドは、
そのクラスの継承関係(親クラス郡)を表示するメソッドです。
モジュール
モジュールを使うと、
メソッドを共同利用することが出来ます。
メソッドを共同利用する手順
1. モジュールを作る2. モジュールにメソッドを定義する3. モジュールのメソッドをクラスで使う
モジュールの定義
module モジュール名
end
クラスにモジュールをインクルードする
class クラス名
include モジュール名
end
Enumerableモジュール
配列に対して「全要素が該当しない」ことを調べる
none?メソッドがあります。
includeとrequire_relativeの違い
include は、
モジュールを渡してそのモジュールに書かれたメソッドを暮らすから利用出来るようにするメソッド
require_relativeは、
ファイル名を渡してそのファイルに定義されたクラスやモジュールを使えるようにするメソッド
という所で今日は以上です!
今日も素敵な一日をお過ごしくださいー