カテゴリー
未分類

Rubyのクラスメソッド・インスタンスメソッド・関数的メソッドについて

レシーバーがインスタンスではなくクラスであればクラスメソッドと呼ぶ。例ではTimeがクラスであり、nowがクラスメソッドに該当する。

puts Time.now.to_s

自作したものを例とするとhello_messageがクラスメソッドに該当する。

class Message
class << self
def hello_message(name)
"Hello #{name}"
end
end
end
puts Message.hello_message("Jane")

インスタンスメソッドはオブジェクトをレシーバとするメソッドのこと。例ではarrがレシーバでありjoinインスタンスメソッドに該当する。

arr = ["This", "is", "a", "pen"]
puts arr.join(" ")

自作したものを例とするとhelloインスタンスメソッドに該当する。

class Message
def initialize(name)
@name = name
end
def hello
puts "Hello #{@name}"
end
end
msg = Message.new("Jane")
msg.hello

関数的メソッドとはレシーバがないメソッドのこと。例ではputsが該当する。

puts "Hello world"

自作で作成したメソッドなども同じである。この例におけるexample "Tom"の部分も関数的メソッドと呼べる。

def example(str)
puts "Hello " + str
end
example "Tom"

自作クラスの中にメソッドを作成する時は、インスタンスメソッドかクラスメソッドを作成すると呼称し、レシーバを必要としない自作メソッドを作成する時は関数的メソッドを作成すると呼称できる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA