かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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