Rubyのクラスとモジュールについて
Rubyのクラスとモジュールについて、参考リンクを載せながら説明します。
どんな時にモジュールが使われるか
インスタンス化せずにメソッドを格納したいときや、関連するクラスをまとめたいとき、つまり名前空間として使いたいときモジュールを使います。例えば以下のような感じです
module M1 class C1 end class C2 end end M1::C1.new
ドット記法と二重コロン記法
まず、前提として「クラス名とモジュール名は定数として定義される」事を頭に入れてください。
よって、モジュール内部のクラスを指定するときやクラスメソッドを指定するときは二重コロン記法で書くことが出来ます。※
一方、ドット記法はメソッド呼び出しのときにのみ使用可能です。
ちなみに、「::」はスコープ演算子というものです。
※ruby style guidには「メソッド呼び出しでは::の使用は避けましょう」と書いてあるのでメソッド呼び出しにはドット記法を使いましょう。
#モジュールMAのスコープ内にあるCAクラスのmethod1メソッドを呼び出しています。 MA::CA.method1
クラスメソッドとインスタンスメソッド
クラスに対して処理をするメソッドをクラスメソッド、インスタンスに対して処理をするメソッドをインスタンスメソッドといいます。(そのまんま)
例えば、クラスからインスタンスを作成するメソッドはクラスメソッドで、インスタンスの値を変更するメソッドがインスタンスメソッドになります。具体的には以下のコードのような感じになります。
#Userモデルがあるとします class User < ActiveRecord::Base def name(user) puts user.name end end #コンソールに移動 #new()はクラスメソッド user = User.new(name: ”abc”) #nameはインスタンスメソッド user.name #=>”abc"
selfについて
self付けるとクラスメソッド、self付けないとインスタンスメソッドになります。
Railsにおけるモジュールの取り扱い
www.slideshare.net
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (2件) を見る