かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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が返ってきてるみたい。