Pages

2008/10/27

Ruby 特異メソッド

Ruby特有の挙動として、特異メソッドというものがあるらしい。

# 特異メソッドの例

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「ポウ!」


クラスのインスタンスに対しての特異メソッドは、
使いどころによっては便利なこともあるかもしれない。
Related Posts Plugin for WordPress, Blogger...