Ruby超入門 2周目 CHAPTER8-6 クラスを使って メソッドを呼び出す まで
『ゼロからわかる Ruby 超入門 (かんたんIT基礎講座) 』
github.com
今日はお休みなので寝まくりました!さらに昼寝までしちゃいました!睡眠最高!!koujiです。おはようございます。
ってことで今日も振り返っていくぜー!
インスタンスメソッドとクラスメソッド
インスタンスメソッドはインスタンス(クラスのオブジェクト)に対して呼び出す!
クラスメソッドはクラスに対して呼び出す!クラスそのものに対して呼び出すんだぜ。
インスタンス(オブジェクト)とクラスの違いは…
例えば鈴木家には鈴木1くん鈴木2くん鈴木3さんとか何人もいる。
class 鈴木 なわけですよ。で、鈴木1 = 鈴木.newすると1くんが作られるんだ。この鈴木1くんがインスタンスだ。で、鈴木家がクラスだ。鈴木1くんと鈴木家は違うんだ。
クラスメソッドの定義
定義の仕方は簡単だね。self.をつけてあげるとクラス名.メソッド名で呼び出す。Fuckクラスのfuckメソッドでファック!!ファック!!は自分で書いてて笑った。
で、インスタンスメソッドとかクラスメソッドをドキュメントに書くときの記法があるみたい。
インスタンスメソッド: クラス名#メソッド名
クラスメソッド: クラス名.メソッド名 もしくは クラス名::メソッド名
リファレンスマニュアルとかにもこの記法ででてくるので覚えておいて損はないぜ。
同じクラスのクラスメソッドを呼び出す
これは簡単で、インスタンスメソッドのときと同じようにメソッド名だけ書けばOKだファック!!ファック三昧にしてみたぜ。勘違いしてほしくないことが1つあるんだ…いつもわけわかんない感じでプログラム書いてるけど、超入門の中身はこんなにわけわかんない感じで書いてないから安心してほしい… 勘違いする人もなかなか居ないと思うので書かなかったけど念の為だ…
ちなみにインスタンスメソッドからクラスメソッドを呼び出すこともできるようだ。
こんな感じね。インスタンスメソッドのbabylon_fuckの中で、Fuck.mother_fuckって書いてクラスメソッドのself.mother_fuckを呼び出してるね。他の書き方としてself.class.mother_fuckって書き方もできるよ。クラス名.クラスメソッド名かself.class.クラスメソッド名ね。
ちなみにクラスメソッドを複数書く場合はこっちのほうが楽だね。
これね。class << selefからendまでの中に書いたメソッドがクラスメソッドになる感じだね。その外にあるbabylon_fuckはインスタンスメソッドだね。毎回self書かなくていいので便利だし整理されてる感じがして見やすいよね。
ってことでCHAPTER8-6の振り返りでした!
長くなっちゃうとわかりにくいので分割していこうかなって思ってます。今日はCHAPTER8-7と8も振り返るつもりでっす。
その前にご飯かなぁ。ってことで飯くってくるぜ。
アディオス!