アマグラミング

プログラミング初心者が勉強したことを復習とメモがてら書いているだけです。

(84)メソッドの種類

メソッドには種類があります。

Rubyは3種類に分けられます。

 

インスタンスメソッド

クラスメソッド

関数的メソッド

 

この3つです。

 

インスタンスメソッドは、一般的なメソッドで

あるインスタンス(オブジェクト)があったとき、

そのオブジェクトをレシーバーとするメソッドのことを、

インスタンスメソッドというわけです。

 

文字列、数値、配列など様々なオブジェクトがあり、

レシーバーにもなるわけですが

オブジェクトに対して、どんなインスタンスメソッドが使えるのかは

そのオブジェクトの種類によります。

 

オブジェクトに対して、インスタンスメソッドを用いると

クラスごとに決められた処理をします。

 

同じ名前のメソッドは、同じような動きをすることが多いですが、

処理の内容はオブジェクトによって違いがあります。

 

例としてto_sメソッドは多くのクラスで使えますが、

 

p 1.to_s

p Time.now.to_s

これを実行すると

f:id:tiroru17:20170702134241p:plain

 

オブジェクトを文字列にするという意味は共通しています。

 

レシーバがインスタンスではなくクラスそのものの場合

そのメソッドはクラス・メソッドと言います。

 

メソッド定義のときの

クラス名.new

とか

さきほど出てきた、Time.nowも

クラスメソッドらしい。

ということはまだ勉強してないけど、Timeっていうのもひとつのクラスって

ことか・・・

nowがクラスメソッドってことか。

 

クラスメソッドの呼び出しには、

.の代わりに::を使うこともできる。

 

関数的メソッドはレシーバーが省略されています。

関数的メソッドは、レシーバーの状態によって結果が変わらないようにできています。

 

print "Hello"

 

例えばprintメソッドなどはレシーバーの情報はいりません。

つまりレシーバーを必要としないメソッドは関数的メソッドというわけです。