かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

defined?

defined?演算子
演算子だったんだねこれって。

効能

  • 定義されてるかどうか調べてくれる
  • 定義されてない場合はnil
  • 定義されてる場合は種別を表す文字列を返す


ほお。
実験!!
こんなコードをば

class A
    attr_accessor :name
    
    def public_method
    end
    
    private
    # privateなメソッド
    def private_method
    end
end

a = A.new

puts "defined? a                = #{defined? a}"
puts "defined? a.public_method  = #{defined? a.public_method}"
puts "defined? a.private_method = #{defined? a.private_method}"
puts "defined? a.name           = #{defined? a.name}"

実行すと

defined? a                = local-variable
defined? a.public_method  = method
defined? a.private_method = 
defined? a.name           = method

なるほろ。
privateなメソッドは見てくれないのか。どうもnilが返ってきてるみたい。