Ruby 特異メソッド
Ruby特有の挙動として、特異メソッドというものがあるらしい。
上記の例では、"foo"というオブジェクトに対してメソッドを定義している。
通常、あるメソッドを追加したいという場合にはクラスに新しくメソッドを追加するのだが、この特異メソッドを使用することで、特定のオブジェクトだけのメソッドを作ることができる。
クラスのインスタンスから特異メソッドを作る
クラスのインスタンスに対しての特異メソッドは、
使いどころによっては便利なこともあるかもしれない。
# 特異メソッドの例
foo = "ミスターFOO"
def foo.say(name)
puts self + "「こんにちは#{name}」"
end
foo.say("子猫ちゃん")
# 結果
# ミスターFOO「こんにちは子猫ちゃん」
上記の例では、"foo"というオブジェクトに対してメソッドを定義している。
通常、あるメソッドを追加したいという場合にはクラスに新しくメソッドを追加するのだが、この特異メソッドを使用することで、特定のオブジェクトだけのメソッドを作ることができる。
クラスのインスタンスから特異メソッドを作る
# 通常のクラス定義
class A
def hoge
puts "ほげほげ"
end
end
AA = A.new
AA.hoge
# クラスのインスタンスから特異メソッドを追加
def AA.voice(name)
puts "#{name}「ポウ!」"
end
AA.voice("ミスターHOGE")
# 結果
# ほげほげ
# ミスターHOGE「ポウ!」
クラスのインスタンスに対しての特異メソッドは、
使いどころによっては便利なこともあるかもしれない。