読者です 読者をやめる 読者になる 読者になる

特異メソッド

特異メソッドは、特定のオブジェクト固有のメソッドを作成することができます。

class Japanese
  def hello(name)
    puts "#{name} こんにちは"
  end
end

foo = Japanese.new
foo.hello("foo")
=>foo こんにちは
bar = Japanese.new
bar.hello("bar")
=> bar こんにちは

def foo.hello(name)
  puts "#{name}は特異メソッドを使用した"
end

foo.hello("foo")
=>fooは特異メソッドを使用した←foo固有のメソッドになっています。
bar.hello("bar")
=> bar こんにちは

fooのみ、メソッドが変化しています。

ちなみに特異メソッドはオーバーライドもできます。

def foo.hello(name)
  super
  puts "#{name}は特異メソッドを使用した"
end

foo.hello("foo")
=>foo こんにちは
=>fooは特異メソッドを使用した

特異メソッドを辿っていくと、rubyの仕組みを深めれるようですが、そこまでは分かってないので、特異メソッドがあるということだけの報告です。