インスタンスメソッド・クラスメソッド・関数メソッド

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

インスタンスメソッド

スポンサーリンク

インスタンスメソッドは、レシーバ(操作対象となるオブジェクト)に対して実行されるメソッドです。

レシーバ.メソッド名(arg1, arg2, arg3...)

と、レシーバに対してメソッドが適用されます。
こういった書き方の場合、操作の対象がすべてオブジェクトですので、関数ではなくメソッドと呼びます。
メソッドとは、クラス内に定義された関数のことです。

p 'Perl,JavaScript,C,Lisp'.split(',')
puts "hello world"[6].chr
puts "hello world".index('wor')
puts [10, 20, 30].index(30)
puts 98765.integer?

上記の例では、split, chr, index, integer? などがメソッドです。
「.」の前の部分が、レシーバとなります。
オブジェクトに対してメソッドが適用されると、操作後の値が返されます。
実行結果。

["Perl", "JavaScript", "C", "Lisp"]
w
6
2
true

クラスメソッド

レシーバがオブジェクト(クラスのインスタンス)ではなくて、クラスそのものの場合に適用されるメソッドをクラスメソッドと呼びます。
クラスメソッドは、クラスに属するメソッドのことで、静的メソッドとも言われます。

array = Array.new(3)
pattern = Regexp.new('version')
now_time = Time.now
 
p array
puts pattern =~ "Test version"
puts now_time

Array.new, Regexp.newのnewメソッド、Time.nowのnowメソッドなどは、インスタンスではなくてクラスに適用されています。
これらのメソッドをクラスメソッドと言います。

関数メソッド

レシーバがない(ように見える)メソッドを、Rubyでは関数メソッドといいます。
これまでも頻出している、puts, printなどは関数メソッドであり、またメソッド定義(関数・ファンクション)で定義したようなメソッドも、関数メソッドです。

スポンサーリンク
 
スポンサーリンク